美文网首页
iOS动画之UIView动画

iOS动画之UIView动画

作者: Rong的简书 | 来源:发表于2017-08-20 22:17 被阅读0次

iOS酷炫的动画效果可以很好的增强用户体验。在iOS开发中实现动画的方式有多种,一般而言,简单的动画使用UIKit框架封装的动画便已足够。UIKit框架将这些动画集成到了UIView上, 即接下来要讲的UIView动画。

当UIView内部的属性发生变化时,UIView动画将为这些属性变化提供动画效果。UIView动画支持的属性有:frame,bounds,center,alpha,backgroundColor,transform等。

UIView动画有两种实现方式:首尾式和block方式。

首尾式

首尾式的动画代码必须放在 beginAnimations 和 commitAnimations 之间。

[UIViewbeginAnimations:nilcontext:nil];

//需执行的动画代码

[UIViewcommitAnimations];

常用的设置UIView动画属性的方法:

// 设置代理对象,可以监听动画即将开始和已经结束

+ (void)setAnimationDelegate:(nullableid)delegate;  // default = nil

+ (void)setAnimationWillStartSelector:(nullableSEL)selector;  // default = NULL.

+ (void)setAnimationDidStopSelector:(nullableSEL)selector;  // default = NULL. 

//  设置动画时长

+ (void)setAnimationDuration:(NSTimeInterval)duration;  // default = 0.2

// 设置动画延迟执行

+ (void)setAnimationDelay:(NSTimeInterval)delay;// default = 0.0

//  设置动画节奏,参数是枚举类型,有四种类型

+ (void)setAnimationCurve:(UIViewAnimationCurve)curve;  // default = UIViewAnimationCurveEaseInOut

//  设置动画重复次数

+ (void)setAnimationRepeatCount:(float)repeatCount;  // default = 0.0.May be fractional

//  设置动画是否进行反转(逆向回去)

+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses;  // default = NO.

//  设置UIView的过渡类型

+ (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView*)view cache:(BOOL)cache; 

跑在模拟器上可以使用菜单栏 --> Debug --> Slow Animations (快捷键:cmd + T),观看放慢的动画执行效果。

UIViewAnimationCurve枚举值(控制动画的节奏):

UIViewAnimationCurveEaseInOut,  // 开始和结束缓慢 (默认值)

UIViewAnimationCurveEaseIn,  // 开始缓慢

UIViewAnimationCurveEaseOut,  // 结束缓慢

UIViewAnimationCurveLinear,  //  匀速

UIViewAnimationTransition枚举值(设置UIView的过渡效果):

UIViewAnimationTransitionNone,

UIViewAnimationTransitionFlipFromLeft,  //  从左往右翻转

UIViewAnimationTransitionFlipFromRight,  //  从右往左翻转

UIViewAnimationTransitionCurlUp,  //  从下往上卷曲(翻页)

UIViewAnimationTransitionCurlDown,  //  从上往下卷曲(翻页)

block方式

从iOS 4.0开始,苹果提供了block的方式的UIView动画,使用更加简单。

//  动画立刻执行,默认动画节奏为UIViewAnimationOptionCurveEaseInOut

//  UIView的过渡方式为UIViewAnimationOptionTransitionNone

[UIViewanimateWithDuration:0.2  animations:^{

      //动画代码

}];

//  该动画方法带有动画执行完的block回调

[UIView  animateWithDuration:0.2  animations:^{

      //动画代码

}  completion:^(BOOLfinished) {

      //动画执行完的操作

}];

//  该动画方法带有延迟执行的参数

[UIView  animateWithDuration:0.2  delay:0.1  options:UIViewAnimationOptionCurveEaseOut  animations:^{

      //动画代码

} completion:^(BOOLfinished) {

      //动画执行完的操作

}];

/*

弹簧动画,iOS 7.0提供

第三个参数:可以理解为阻尼系数,取值0 - 1,越接近于0,阻尼越大,弹力越大

第四个参数:初始弹簧速度,值越大,初始弹簧速度越快

*/

[UIView  animateWithDuration:0.2  delay:0.1  usingSpringWithDamping:0.5  initialSpringVelocity:5  options:UIViewAnimationOptionCurveEaseOut  animations:^{

      //动画代码

}completion:^(BOOLfinished) {

      //动画执行完的操作

}];

//  关键帧动画,iOS 7.0提供

[UIView animateKeyframesWithDuration:0.2  delay:0.1  options:UIViewKeyframeAnimationOptionRepeat animations:^{

      //动画代码

} completion:^(BOOLfinished) {

    //动画执行完的操作

}];

可以为UIView添加关键帧,方法如下:

[UIView  addKeyframeWithRelativeStartTime:(double)frameStartTime  relativeDuration:(double)frameDuration  animations:^{

}]

如有错误和不足,欢迎指正。

相关文章

网友评论

      本文标题:iOS动画之UIView动画

      本文链接:https://www.haomeiwen.com/subject/rbtfdxtx.html