将来跳槽用动画

iOS 开发·核心动画相关类

2021-02-24  本文已影响0人  富城

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];
上一篇下一篇

猜你喜欢

热点阅读