首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS 开发 UIView 动画说起

动效 ps:本文属于新手向的动画入门文章 登录动画说起 ---- 很长一段时间以来,我都在基于CALayer层进行动画实现,却忽略了UIKit提供给我们的动画接口。...在我们了解这些强大的接口前,我们先来看看第一个效果:在用户打开app要进行登录的时候,账户和密码输入框屏幕的左边进入,接着登录按钮出现。 ?...在viewDidAppear:中运行这段代码,你会看到文本框左侧滑动,按钮也渐变显示出来的,但是跟我们要的结果不太一样 —— 三个动画没有错开,效果并不那么的好看。...比如我尝试着让某个UICollectionView的分类按钮屏幕下方弹入视图的时候;又或者我让这个小球弹到右下角,以提示用户该如何操作: ?...本文作为动画篇的第一篇博客,目的是为了最简单的UIView动画讲起,慢慢的拓展其它的动画,也希望能起到抛砖引玉的作用。

1.6K70
您找到你想要的搜索结果了吗?
是的
没有找到

CAAnimation 核心动画概念一、 CAAnimation二、 CAPropertyAnimation三、CABasicAnimation(基本动画)CAPropertyAnimation的子类

要注意的是, Core Animation是直接作用在CALayer上的.并非UIView。...CAAnimation继承结构 ---- 一、 CAAnimation CAAnimation类是所有动画对象的父类,负责控制动画的持续时间和速度等,是个抽象类,不能直接使用,应该使用它具体的子类...*)anim;核心动画开始时执行 (2)- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;核心动画执行结束后调用 --...相应属性的初始值 toValue : keyPath相应属性的结束值,到某个固定的值(类似transform的make含义) 注意:随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值fromValue...的类方法实现转场动画 单视图: + (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(

1.8K90

微信团队分享:详解iOS版微信视频号直播中因帧率异常导致的功耗问题

如下图: 5.5帧率变化探索 所有的帧提交操作最终都是在 Render Server 触发的,也就是只有 Render Server 统计FPS才是最终的实际 FPS,那我们要怎么统计呢?...com.apple.CoreAnimation.CAWindowServer.DisplayChanged 的通知,QuartCore 会在启动时注册这个通知,并收到通知后通过 mach port 通信获取当前注册的帧速率值...但是在我们直播场景中,一共有如下几种场景的动画提交: 1)UIView block 动画; 2)UIScrollView scroll 动画; 3)NSTimer 动画; 4)CAAnimation。...如下: 8、问题扩展 我们通过一些奇怪的绕过方式间接的实现了对所有基于 UIView block animation api 调用的动画以及 CAAnimation api 调用的动画都实现了动态降帧,...方案如下: 最终也一样取得了GPU 同比下降28%甚至更高的效果,有效减轻了过热时的系统负载和功耗,并且肉眼上基本无法分辨出差异。

31100

老司机带你走进Core Animation 之CAAnimation

好在呢,苹果已经想到程序员也是要撩妹的这个需求,所以为我们提供了CAAnimation这个好东西,当然还贴心的帮我们又进行了一层封装,那就是UIView得animate相关的方法了。...CALayer与UIView CAAnimationUIView animate ---- CALayer 为什么会先说CALayer呢?以为CAAimation实际上操作的都是Layer层。...数值就是锚点到layer的左上角(类比UIView的origin)的 横向/纵向 距离占layer得 width/height 的比例。 锚点 contents,寄宿图。...convertTime是获取本地时间。该方法有两个参数,第一个是时间,第二个是时间所对应的图层。当第二个参数为nil时,则返回的就是第一个参数的值。 这样我们就能得到一个绝对时间。...图层树就是想UIView中的subview、superview一样的图层的树状逻辑。 他在CAAnimation中的各属性值是不随着动画而实时变化的。

1.4K20

iOS动画专题·UIView二维形变动画与CAAnimation核心动画(transform动画,基础,关键帧,组动画,路径动画,贝塞尔曲线)

1. iOS动画 总的来说,涉及类的形式来看,iOS动画有:基于UIView的仿射形变动画,基于CAAnimation及其子类的动画,基于CG的动画。这篇文章着重总结前两种动画。 2....UIView动画 设置UIView形变动画有两种常见用到的属性,.frame,.transform,所以有的人也可以分别称之为: ① frame动画 ② transform动画 这两种动画只需要在动画语法中适当的位置...,基于UIView和CALayer的属性设置变化值即可。...这种动画,不需要 调用核心动画CAAnimation里面的专用类和API。...CAAnimation核心动画 CAAnimation——所有动画对象的父类 3.1 设置动画的一种语法形式 addAnimation /** * 抖动效果 */ -(void)shakeAnimation

3.2K21

Quartz2D复习(四) --- 图层CALayer和动画CAAnimation

1、CALayer 1)、在ios中,能看得见摸得着的东西基本上都是UIView, 比如按钮、文本标签、文本输入框、图标等,这些都是UIView 2)、UIView之所以能显示在屏幕上,完全是因为它内部的一个图层...3)、在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层:@property (nonatomic,readonly,...UIView的显示。...4)、CAAnimation继承结构,紫色虚线表示继承自某类,红色虚线表示遵守某个协议 : ?...fromValue : keyPath相应属性的初始值   toValue: keyPath相应属性的结束值   动画过程说明: 随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值fromValue

1.4K30

iOS面试题:UIView block动画实现原理

Animatable. */ @property CATransform3D transform; 如果一个属性被标记为Animatable,那么它具有以下两个特点: 1、直接对它赋值可能产生隐式动画; 2、我们的CAAnimation...它会让它的delegate(没错CALayer拥有一个属性叫做delegate)调用actionForLayer:forKey:来获取一个返回值,这个返回值在声明的时候是一个id对象,当然在运行时它可能是任何对象...如果返回的对象是一个nil,则进行默认的隐式动画; 如果返回的对象是一个NSNull null ,则CALayer不会做任何动画; 如果是一个正确的实现了CAAction协议的对象,则CALayer用这个对象来生成一个CAAnimation...有趣的是,如果这个CALayer被一个UIView所持有,那么这个CALayer的delegate就是持有它的那个UIView。...实际上结果大家都应该能想得到:在UIView的动画block外面,UIView的这个方法将返回NSNull,而在block里面,UIView将返回一个正确的CAAction对象(这里将不深究UIView

98820

iOS学习——核心动画

核心动画和UIView动画的对比:UIView动画可以看成是对核心动画的封装,和UIView动画不同的是,通过核心动画改变layer的状态(比如position),动画执行完毕后实际上是没有改变的(表面上看起来已改变...CAPropertyAnimation :是CAAnimation的子类,它支持动画地显示图层的keyPath,一般不直接使用。...那么你会疑惑为什么这不是默认的选择,实际上当使用UIView的动画方法时,他的确是默认的,但当创建CAAnimation的时候,就需要手动设置它了。...cameraIrisHollowClose",//摄像头关闭效果,动画方向不可控 subtype:设置转场方向 //转场方向,系统一共提供四个方向: //kCATransitionFromRight//右开始...//kCATransitionFromLeft//左开始 //kCATransitionFromTop//从上开始 //kCATransitionFromBottom//从下开始 startProgress

1.2K50

iOS 动画笔记 (一)

可以给用户增加一些独特的体验感,估计也有许多的和我一样的,看着那些觉得不错的动画,也就只能流口水的孩子,毕竟可能不知道哪里下手去写!...(1) CALayer 实际上UIView是对CALayer封装,在CALayer的基础上再添加交互功能。UIView的显示必须依赖于CALayer。...具体讲CAlayer的属性     (2) UIBezierPath   (贝塞尔曲线)     (3) CAAnimation  (重点)       首先 CAAnimation 可以分为以下几类:...也是本系列的接下来的内容   CAAnimationGroup   组动画,支持多个CABasicAnimation或者CAKeyframeAnimation动画同时执行 下面链接的文章能帮助大家很好的学习 CAAnimation...和CAlayer: 总接来说就是如下几点:  每个 UIView 内部都有一个 CALayer 在背后提供内容的绘制和显示,并且 UIView 的尺寸样式都由内部的 Layer 所提供。

77980

Core Animation总结

每一个UIView视图内部都封装了一个CALayer图层,我们通过UIView的layer属性访问这个图层。...其实对于UIView来说负责内容展示的就是它内部的CALayer,UIView只不过是将自身的展示任务交给了内部的CALayer完成,而它还肩负着一些其它的任务,比如说用户的交互响应,提供一些Core...开始延迟几秒的话,设置为【CACurrentMediaTime() + 秒数】 的方式 duration 动画的时长 speed 动画运行速度(如果把动画的duration设置为3秒,而speed设置为...可使用下面示例来获取图层的当前本地时间。CACurrentMediaTime函数返回计算机的当前时钟时间,该方法将本机时间并转换为图层的本地时间。...获取图层的当前本地时间 CFTimeInterval localLayerTime = [myLayer convertTime:CACurrentMediaTime()fromLayer:nil];

1.3K10

iOS开发CoreAnimation解读之四——Layer层动画内容

iOS开发CoreAnimation解读之四——Layer层动画内容 一、引言         通过前几篇博客的介绍,我们可以了解到layer层可以设置许多与控件UI相关的属性,并且对于iOS开发,UIView...二、CAAnimation动画体系的介绍         CAAnimation是CoreAnimation框架中执行动画对象的基类,下面有一张图,是我手画的,不太美观,但是可以将与CAAnimation...从上图中可以看到,CAAnimation中继承出三个子类,分别是用于创建属性动画的CAPropertyAnimation,创建转场动画的CATransition和创建组合动画的CAAnimationGroup...1.CAAnimation属性和方法 CAAnimation作为动画对象的基类,其中封装了动画的基础属性,如下: //通过类方法创建一个CAAnimation对象 + (instancetype)animation...阻尼系数 默认为10 必须大于0 这个值越大 回弹的幅度越小 @property CGFloat damping; //初始速度 @property CGFloat initialVelocity; //获取动画停下来需要的时间

95610
领券