JPSDisplayLink 提供了一个简单的、基于 CADisplayLink 的动画接口。
这对于不支持基于 UIView 的动画的属性(如 UILabel 或 UITextView 上的字体大小)来说非常理想。
重要提示:如果您的项目不使用 ARC:您必须在目标设置 > 编译阶段 > 编译源中添加 -fobjc-arc
编译器标志到 JPSDisplayLink.m
。
将 JPSDisplayLink/JPSDisplayLink
目录拖入您的项目中。
JPSDisplayLink 只有一个类方法
typedef void (^JPSDisplayLinkBlock)(CGFloat progress);
+ (void)runDisplayLinkBlock:(JPSDisplayLinkBlock)block duration:(CFTimeInterval)duration;
将创建一个 JPSDisplayLink 对象,并将其隐式保留在指定的时间内,然后自动释放。
在使用 JPSDisplayLinkBlock 时,请确保遵循适当的块礼仪:例如,避免保留循环。
通过操作动画块中的 progress
参数来添加缓动到您的 JPSDisplayLink 动画。
例如,要以线性 easing in/out 动画字体大小,将 AHEasing 添加到您的项目中并使用以下代码
[JPSDisplayLink runDisplayLinkBlock:^(CGFloat progress) {
CGFloat easedProgress = CubicEaseInOut(progress);
weakLabel.font = [UIFont boldSystemFontOfSize:12.0f + easedProgress*16.0f];
} duration:5.0f];
在 /JPSDisplayLinkDemo
中查看 Xcode 示例项目。
以下是演示应用程序的动图。请注意,动图中的帧率比现实中的慢得多。
此项目受 MIT 许可协议许可。