iOS 开发·核心动画相关类

CALayer 所属 QuartzCore框架。

UIView 有交互和显示功能,

CALayer 是用来显示

添加动画三步骤:

  1. 初始化动画对象
  2. 修改动画属性值
  3. 将动画添加到 layer

动画前后,view 的位置是没有变的:因为看到的都是假象,UIView 并没有发生变化

虽然 CALayer 是不响应点击事件的,但是可以设置位置监测:

CGPoint p = [[touches anyObject] locationInView:self.view];
if ([_redLayer.presentationLayer hitTest:p]) {
    NSLog(@"1");
}

模型图层和呈现图层

呈现图层:presentationLayer:返回表示层对象的副本,该对象表示当前在屏幕上显示的层状态。

显式动画和隐式动画区别:

隐式:设置 layerframe 等属性,前后会有动画效果,时间是0.25s

显式:直接通过 CoreAnimation 类设置动画

关键帧动画的演示(图标抖动效果)

#define angleToRadians(angle) ((angle)/180.0 * M_PI)
// 窗口抖动动画(关键帧动画)
CAKeyframeAnimation *frameAnim = [CAKeyframeAnimation animation];
frameAnim.keyPath = @"transform.rotation"; // 旋转角度
frameAnim.values = @[@angleToRadians(-3), @angleToRadians(3)]; // 角度转弧度,再填一个到-3 的角度就好看了, @angleToRadians(-3),或者设置autoreverse 属性为yes;
frameAnim.autoreverses = YES; // 但是速度变慢了, 再设置一个速度 speed 为 2
frameAnim.speed = 2; // 两倍速度
frameAnim.repeatCount = MAXFLOAT;
[_redLayer addAnimation:frameAnim forKey:nil];
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容