UIView动画一般使用
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); // delay = 0.0, options = 0
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations NS_AVAILABLE_IOS(4_0); // delay = 0.0, options = 0, completion = NULL
这两个方法,在动画过程中手势交互默认是关闭的。
可以使用
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);
设置options为UIViewAnimationOptionAllowUserInteraction来打开交互。
UIViewAnimationOptions是一个动画效果的枚举值,它可以影响动画的执行效果。
typedef NS_OPTIONS(NSUInteger, UIViewAnimationOptions) {
UIViewAnimationOptionLayoutSubviews = 1 << 0, // 设置子视图随父视图展示动画
UIViewAnimationOptionAllowUserInteraction = 1 << 1, // 允许在动画执行时用户与其进行交互
UIViewAnimationOptionBeginFromCurrentState = 1 << 2, // 允许在动画执行时执行新的动画
UIViewAnimationOptionRepeat = 1 << 3, // 设置动画循环执行
UIViewAnimationOptionAutoreverse = 1 << 4, // 设置动画反向执行,需要设置动画循环
UIViewAnimationOptionOverrideInheritedDuration = 1 << 5, // 强制动画使用内层动画的时间值
UIViewAnimationOptionOverrideInheritedCurve = 1 << 6, // 强制动画使用内层动画曲线值
UIViewAnimationOptionAllowAnimatedContent = 1 << 7, // 设置动画视图实时刷新
UIViewAnimationOptionShowHideTransitionViews = 1 << 8, // 设置视图切换时隐藏,而不是移除
UIViewAnimationOptionOverrideInheritedOptions = 1 << 9, // 这部分属性设置动画播放的线性效果
UIViewAnimationOptionCurveEaseInOut = 0 << 16, // 淡入淡出 首末减速
UIViewAnimationOptionCurveEaseIn = 1 << 16, // 淡入 初始减速
UIViewAnimationOptionCurveEaseOut = 2 << 16, // 淡出 末尾减速
UIViewAnimationOptionCurveLinear = 3 << 16, // 线性 匀速执行
UIViewAnimationOptionTransitionNone = 0 << 20, // default
UIViewAnimationOptionTransitionFlipFromLeft = 1 << 20, // 从左边切入
UIViewAnimationOptionTransitionFlipFromRight = 2 << 20, // 从右边切入
UIViewAnimationOptionTransitionCurlUp = 3 << 20, // /从上面立体进入
UIViewAnimationOptionTransitionCurlDown = 4 << 20, // /从下面立体进入
UIViewAnimationOptionTransitionCrossDissolve = 5 << 20, // 溶解效果
UIViewAnimationOptionTransitionFlipFromTop = 6 << 20, // 从上面切入
UIViewAnimationOptionTransitionFlipFromBottom = 7 << 20, // 从下面切入
} NS_ENUM_AVAILABLE_IOS(4_0);
原谅我的渣英语,枚举值翻译摘自iOS动画开发之一——UIViewAnimation动画的使用
属性可以使用|进行多项合并。
[UIView animateWithDuration:1.8f delay:0.f options:UIViewAnimationOptionCurveEaseOut|UIViewAnimationOptionAllowUserInteraction animations:^{
…………
} completion:^(BOOL finished) {
…………
}];