uiview动画

核心动画与UIView

て烟熏妆下的殇ゞ 提交于 2020-04-04 18:51:52
UIView与核心动画区别?(掌握) 1.核心动画只作用在layer. 2.核心动画看到的都是假像,它并没有去修改UIView的真实位置. 什么时候使用核心动画? 1.当不需要与用户进行交互,使用核心动画 2.当要根据路径做动画时,使用核心动画:CABasicAnimation,CAKeyFrameAnimation,两个都可以根据绘制的路径UIBizerPath来绘制路径来执行动画 3.当做转场动画时, 使用核心动画 (核心动画转场类型比较多)CATrasition或是UIView的核心动画 UIView封装的动画与CALayer动画的对比 使用UIView和CALayer都能实现动画效果,但是在真实的开发中,一般还是主要使用UIView封装的动画,而很少使用CALayer的动画。 CALayer核心动画与UIView动画的区别: UIView封装的动画执行完毕之后不会反弹。即如果是通过CALayer核心动画改变layer的位置状态,表面上看虽然已经改变了,但是实际上它的位置是没有改变的。 来源: https://www.cnblogs.com/dannygao/p/7088349.html

iOS UIView动画实践(五):Keyframe Animation

十年热恋 提交于 2020-02-28 17:19:03
前言 有些时候大家可能会遇到制作复杂、具有连贯性UIView动画的需求,这时大家可能会使用在 completion 闭包中衔接一段一段的动画,使之成为一段连续的动画。 如果我们只是连接2个,或者3个动画,这种方式或许还行得通,但如果有更多的动画片段需要连接的时候,这种方式会带来灾难性的问题,你的代码会非常的冗余,不断的在 completion 闭包中嵌套代码,使代码维护起来相当的困难。所以今天向大家介绍能更好地实现这个需求的方法,Keyframe动画。 Keyframe动画可以让我们有效的拆分由若干段动画连接而成的复杂动画,可以较为精准的定义每段动画的起始点及持续时间,并且在代码组织方面也非常清晰。先看看今天要带大家实现的动画Demo:            使用场景 我们先来认识一下,在什么样的场景下需要使用Keyframe动画。如图下所示,这是一个由四段动画组成的一个复杂动画,让UIView沿着长方形的轨迹运动: 我们来看看用代码如何实现: [cpp] view plain copy UIView.animateWithDuration(1, animations: { view.center.x += 200.0 }, completion: { _ in UIView.animateWithDuration(1, animations: { view.center.y +=

iOS UIView Class Translation

我只是一个虾纸丫 提交于 2020-02-28 12:55:23
类 UIView 一个管理屏幕上矩形区域内容的对象。 概述 Views 是你应用的用户界面最基础的组成部分。UIView类定义了对于所有 views 的共有的行为。一个 view 对象在它的边界矩形内渲染内容并且通过内容处理一切的交互行为。UIView 类是一个可以实例化并且用于展示固定背景颜色的具体类。你还可以使 UIView 子类化去描述更加复杂的内容。为了显示 labels,images,buttons 和其他在app内部常见的界面元素,用 UIKit 框架提供的 view 的子类比你自己定义要好。 因为 view 对象你的应用与用户交互的是主要的途径,它们有许多责任。下面列出一小部分: 绘图和动画 Views 用 UIKit 或者 Core Graphics 框架在它的矩形区域内去绘制内容。 某些 view 属性可以设置为新值的动画。 约束和子视图管理 Views 可以包含0个或更多的子视图。 Views 可以调整它们子视图的大小和位置。 使用“自动布局”定义根据视图层次结构中的更改调整视图大小和重新定位视图的规则。 事件处理 一个 view 是 UIResponder 的一个子类,可以响应触摸和其他事件类型。 Views 可以安装手势识别器来处理常见的手势。 Views 可以内嵌到其他的 views 内来创建视图层次结构,这个层次结构提供了一个方便的方式来处理相关内容

UIView详解

守給你的承諾、 提交于 2020-02-21 07:56:04
UIView表示屏幕上的一块矩形区域, 同时处理该区域的绘制和触摸事件 UIView在我们APP开发中占有非常重要的地位, 因为我们在iPhone上看到的绝大部分视图控件都是UIView的子类 一个视图可以作为其它视图的父视图, 同时决定着它的子视图的位置及大小 下图为UIKit的层级关系: 要知道UIView的知道必须了解如下内容: 一.三个结构体CGRect, CGSize, CGPoint struct CGRect { CGPoint origin;//位置 CGSize size;//大小 }; typedef struct CGRect CGRect; struct CGSize { CGFloat width;//宽 CGFloat height;//高 }; typedef struct CGSize CGSize; struct CGPoint { CGFloat x;//x点的位置 CGFloat y;//y点的位置 }; typedef struct CGPoint CGPoint; 二.Frame, Bounds, Center 1.Frame和Center都是相对于父视图的, bounds是相对于自身的 2.Frame定义了一个视图的位置和大小, 是CGRect类型的变量, 改变视图的Frame会改变Center 3.Center定义了一个视图中心点的位置

UIView详解

隐身守侯 提交于 2020-01-29 04:15:26
UIView详解(http://www.beyondabel.com/blog/2014/01/01/uiview/) 引言 UIView表示屏幕上的一块矩形区域,它在App中占有绝对重要的地位,因为iOS中几乎所有可视化控件都是UIView的子类。负责渲染区域的内容,并且响应该区域内发生的触摸事件 目录 1、UIView家族 2、UIView的基本属性 3、几何方法类 4、控制级别类 5、渲染类 6、动画类 7、手势类 8、移动效果类 9、基于布局约束类(iOS6.0) 10、基于布局的约束core方法(iOS 6.0) 11、基于约束的兼容性(iOS 6.0) 12、层次布局的约束(iOS 6.0) 13、设备大小布局约束(iOS 6.0) 14、布局调度(iOS 6.0) 15、状态恢复(iOS 6.0) 16、快照 (iOS7.0) 1、UIView家族 下图就是视图的内层次 2、UIView的基本属性 // UIView是否接受events事件,默认为YES BOOL userInteractionEnabled; // 用于做标识所用,默认为0 NSInteger tag; // Core Animation layer有关,在常用方法中再详细讲解 CALayer *layer; // UIView在父视图中的位置 如果是在变形的时候不要用frame

iOS中UIView翻转效果实现

帅比萌擦擦* 提交于 2020-01-24 16:16:31
本文转载至 http://baishiyun.blog.163.com/blog/static/13057117920148228261747/ 新建一个view-based模板工程,在ViewController文件中添加下面的代码,即可实现翻转效果; - (void)viewDidLoad { [super viewDidLoad]; //需要翻转的视图 UIView *parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 150, 320, 200)]; parentView.backgroundColor = [UIColor yellowColor]; parentView.tag = 1000; [self.view addSubview:parentView]; } //需要在h头文件声明下面的动作响应函数 //在xib文件中添加一个button,其响应函数为下面的函数 //运行程序后,点击button就看到翻转效果 -(IBAction)ActionFanzhuan{ //获取当前画图的设备上下文 CGContextRef context = UIGraphicsGetCurrentContext(); //开始准备动画 [UIView beginAnimations:nil context:context

IOS开发之UIView总结

蹲街弑〆低调 提交于 2019-12-21 01:57:21
如果想调用某个类的某个方法可以写成这样,这个方法来自NSObject类 C代码 performSelector: performSelector:withObject: performSelector:withObject:withObject: 实际调用 C代码 [self performSelector:@selector(displayViews) withObject:nil afterDelay:1.0f]; 有三个方法分别是 C代码 //父视图 [self.view superview] //所有子视图 [self.view subviews] //自身的window self.view.window 循环一个视图下面所有视图的方法 C代码 NSArray *allSubviews(UIView *aView) { NSArray *results = [aView subviews]; for (UIView *eachView in [aView subviews]) { NSArray *riz = allSubviews(eachView); if (riz) { results = [results arrayByAddingObjectsFromArray:riz]; } } return results; }

UIView与CALayer 区别

匿名 (未验证) 提交于 2019-12-02 23:47:01
在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层 @property(nonatomic,readonly,retain) CALayer *layer; 当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示 换句话说,UIView本身不具备显示的功能,拥有显示功能的是它内部的图层。 UIView之所以能够显示,完全是因为内部的CALayer对象。因此,通过操作这个CALayer对象,可以很方便地调整UIView的一些界面属性,比如:阴影、圆角大小、边框宽度和颜色等。 详解 CALayer 和 UIView 的区别和联系 1.首先UIView可以响应事件,Layer不可以. UIKit使用UIResponder作为响应对象,来响应系统传递过来的事件并进行处理。UIApplication、UIViewController、UIView、和所有从UIView派生出来的UIKit类

iOS UIView动画实践(三):Transition Animation

寵の児 提交于 2019-11-30 12:32:26
前言 在上两篇文章中向大家介绍了如何创建基于动画属性的视图动画,比如位置、透明度等。但是大家有没有想过添加或删除一个视图时怎样添加相应的动画呢? 当然我们可以用 第一篇文章 中对用户名、密码输入框的处理办法,但是还有更好的办法处理这种状况。那就是在这篇文章中将向大家介绍的过渡转变(Transition)动画。 过渡转变动画是Apple预定义的动画集,它没有更改视图某属性起始值和终止值的概念,而只需要你设定不同的动画选项即可。 添加新视图 在进行示例之前,大家需要注意一点过渡转变动画与动画属性动画的不同之处。我们在创建动画属性动画时只需要在 animations 闭包中添加对视图动画属性修改的代码即可,它没有作用域或作用视图的概念。而在过渡转变动画中有作用视图的概念,也就是说我们调用过渡转变动画方法时需要指定一个作用视图。 明确这点不同之后,我们对作用视图再作进一步的说明。过渡转变动画中的作用视图并不是我们的目标视图,而是目标视图的容器视图,那么大家不难想象,如果该容器视图中有多个子视图,那么这些子视图都会有过渡转变动画效果。下面用示例像大家说明。 先看看一个简单的视图结构: 很明显,我们添加了一个视图作为容器视图,并且尺寸等于屏幕尺寸。在 ViewController.swift 中有该容器视图的Outlet以及一个图片视图: [cpp] view plain copy

iOS开发UI篇—核心动画(UIView封装动画)

廉价感情. 提交于 2019-11-29 10:11:47
一、UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIView beginAnimations :nil context :nil]和[UIView commitAnimations ]之间 常见方法解析: + (void) setAnimationDelegate :(id)delegate 设置动画代理对象,当动画开始或者结束时会发消息给代理对象 + (void) setAnimationWillStartSelector :(SEL)selector 当动画即将开始时,执行delegate对象的selector,并且把beginAnimations:context:中传入的参数传进selector + (void) setAnimationDidStopSelector :(SEL)selector 当动画结束时,执行delegate对象的selector,并且把beginAnimations:context:中传入的参数传进selector + (void) setAnimationDuration :(NSTimeInterval)duration 动画的持续时间