CAAnimation相关类翻译

本文深入探讨了Core Animation中的关键类,包括CAAnimation、CALayer、CAMediaTiming、CAMediaTimingFunction、CATransaction和相关类型,详细翻译了这些头文件的内容,帮助读者掌握iOS动画的核心技术。
摘要由CSDN通过智能技术生成

在这里插入图片描述

CAAnimation.h


#import <QuartzCore/CALayer.h>
#import <Foundation/NSObject.h>

typedef NSString * CAAnimationCalculationMode;
CAAnimationCalculationMode const kCAAnimationLinear;
CAAnimationCalculationMode const kCAAnimationDiscrete;
CAAnimationCalculationMode const kCAAnimationPaced;
CAAnimationCalculationMode const kCAAnimationCubic;
CAAnimationCalculationMode const kCAAnimationCubicPaced;

typedef NSString * CAAnimationRotationMode;
CAAnimationRotationMode const kCAAnimationRotateAuto;
CAAnimationRotationMode const kCAAnimationRotateAutoReverse;

typedef NSString * CATransitionType;
CATransitionType const kCATransitionFade;
CATransitionType const kCATransitionMoveIn;
CATransitionType const kCATransitionPush;
CATransitionType const kCATransitionReveal;

typedef NSString * CATransitionSubtype;
CATransitionSubtype const kCATransitionFromRight;
CATransitionSubtype const kCATransitionFromLeft;
CATransitionSubtype const kCATransitionFromTop;
CATransitionSubtype const kCATransitionFromBottom;

@interface CAAnimation : NSObject <NSSecureCoding, NSCopying, CAMediaTiming, CAAction>

// 创建新的动画对象
+ (instancetype)animation;
// 动画的标识符
+ (nullable id)defaultValueForKey:(NSString *)key;
- (BOOL)shouldArchiveValueForKey:(NSString *)key;
// 动画函数, 用来控制k动画时间段的
@property(nullable, strong) CAMediaTimingFunction *timingFunction;
// 动画代理回调
@property(nullable, strong) id <CAAnimationDelegate> delegate;
// 动画结束后是否从渲染树删除
@property(getter=isRemovedOnCompletion) BOOL removedOnCompletion;

@end

@protocol CAAnimationDelegate <NSObject>
@optional
// 动画开始时
- (void)animationDidStart:(CAAnimation *)anim;
// 动画结束或者从父layer上删除时调用, 动画正常结束时flag为true
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;

@end

@interface CAPropertyAnimation : CAAnimation

// 动画路径的标识符
+ (instancetype)animationWithKeyPath:(nullable NSString *)path;
@property(nullable, copy) NSString *keyPath;
// 如何处理多个动画在同一时间段执行的结果,若为true,同一时间段的动画合成为一个动画,默认为false。
// 使用 CAKeyframeAnimation 时必须将该属性指定为 true ,否则不会出现期待的结果.
@property(getter=isAdditive) BOOL additive;
// 下一次动画执行是否接着刚才的动画,默认为false
@property(getter=isCumulative) BOOL cumulative;
// 动画函数
@property(nullable, strong) CAValueFunction *valueFunction;

@end

// 主要用来操作缩放、平移和旋转等简单动画。
// value的值可以设置为CATransform3D的对象,实现3D动画效果!
@interface CABasicAnimation : CAPropertyAnimation
// fromValue和toValue不为nil,keyPath属性值在fromValue与toValue之间渐变
// fromValue和byValue不为nil,keyPath属性值在fromValue与(fromValue+byValue)之间渐变
// byValue和toValue不为nil,keyPath属性值在(toValue-byValue)与toValue之间渐变
// fromValue不为nil,keyPath属性值在fromValue与图层对应当前值之间渐变
// toValue不为nil,keyPath属性值在图层对应当前值与toValue之间渐变
// byValue不为nil,keyPath属性值在图层对应当前值与(图层对应当前值+toValue)之间渐变

// keyPath相应属性的初始值
@property(nullable, strong) id fromValue;
// keyPaht相应属性的相对插值
@property(nullable, strong) id toValue;
// keyPath相应属性的结束值
@property(nullable, strong) id byValue;

@end

@interface CAKeyframeAnimation : CAPropertyAnimation
// 关键帧动画值的数组,当path为nil时设置有效
@property(nullable, copy) NSArray *values;
// 动画执行的点路径(通过Core Graphics提供的API来绘制路径),设置了path,values将被忽略
@property(nullable) CGPathRef path;
// 关键帧动画每帧动画开始执行时间点的数组(时间段比例0~1), 设置的时候与calculationMode有关
@property(nullable, copy) NSArray<NSNumber *> *keyTimes;

// 动画执行效果数组: kCAMediaTimingFunctionLinear / EaseIn / EaseOut / EaseInEaseOut / Default
@property(nullable, copy) NSArray<CAMediaTimingFunction *> *timingFunctions;
 // 关键帧时间计算方法,每帧动画之间如何过渡: `discrete', `linear', `paced', `cubic' and `cubicPaced'. Defaults to `linear'.
@property(copy) CAAnimationCalculationMode calculationMode;
// cubic calculation modes下的设置
@property(nullable, copy) NSArray<NSNumber *> *tensionValues;
@property(nullable, copy) NSArray<NSNumber *> *continuityValues;
@property(nullable, copy) NSArray<NSNumber *> *biasValues;
// 设置路径旋转,当设置path有不同角度时,会自动旋转layer角度与path相切
@property(nullable, copy) CAAnimationRotationMode rotationMode;

@end

// iOS新增的弹性动画
@interface CASpringAnimation : CABasicAnimation
// 质量,影响图层运动时的弹簧惯性,质量越大,弹簧拉伸和压缩的幅度越大, 默认为1 (0~1)
@property CGFloat mass;
// 刚度系数(劲度系数/弹性系数),刚度系数越大,形变产生的力就越大,运动越快, 默认为100 (0~100)
@property CGFloat stiffness;
//阻尼系数,阻止弹簧伸缩的系数,阻尼系数越大,停止越快, 默认为10 (0~10)
@property CGFloat damping;
// 初始速率,动画视图的初始速度大小 Defaults to zero
// 速率为正数时,速度方向与运动方向一致,速率为负数时,速度方向与运动方向相反
@property CGFloat initialVelocity;
// 估算时间 返回弹簧动画到停止时的估算时间,根据当前的动画参数估算
@property(readonly) CFTimeInterval settlingDuration;

@end

// 转场动画: 为图层提供移入/移出屏幕的动画效果
@interface CATransition : CAAnimation

/**
fade: 淡入淡出效果,交叉淡化过渡, 不支持过渡方向
push:推送效果,新视图把旧视图推出去
reveal:揭开效果,将旧视图移开显示下边的新视图
movein:移动效果,新视图移到旧视图上面
pageCurl: 向上翻页效果,
pageUnCurl: 向下翻页效果,
cube: 立体翻转效果,立方体反转效果
oglFlip: 翻转效果,上下左右反转效果
suckEffect: 收缩效果,如一块布被抽走, 不支持过渡方向
rippleEffect: 水滴波纹效果,不支持过渡方向
cameraIrisHollowOpen: 相机打开效果,不支持过渡方向
cameraIrisHollowClose: 相机关闭效果,不支持过渡方向
 */
// 动画的过渡方式
@property(copy) CATransitionType type;
// 动画的过渡方向: `fromLeft', `fromRight', `fromTop', `fromBottom'
@property(nullable, copy) CATransitionSubtype subtype;
// 动画起点,取值范围为0~1,表示在整个动画中的比例
@property float startProgress;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值