iOS动画开发之二——UIView动画执行的另一种方式

上一篇博客中介绍了UIView的一些常用动画,通过block块,我们可以很方便简洁的创建出动画效果:iOS动画开发之一——UIViewAnimation动画的使用 - 珲少的个人空间 - OSCHINA - 中文开源技术交流社区,这篇博客再介绍一种更加传统的执行UIView的动画的方法。

        这种方式相比如block的方式,显得要麻烦一些,apple官方也推荐我们使用带block的创建动画的方式,我们可以将编程重心更多的放在动画逻辑的实现上。使用begin和commit方式主要分为三个步骤:

    一、设置动画开始

[UIView beginAnimations:@"test" context:nil];

这个函数中的两个参数,第一个用于设置一个动画的标识id,通常第二个参数写为nil。

    二、动画执行的参数设置

+ (void)setAnimationDelegate:(id)delegate; 

    设置这个动画的代理,用于执行动画开始或者结束后的动作

+ (void)setAnimationWillStartSelector:(SEL)selector; 

    设置动画开始时执行的回调

+ (void)setAnimationDidStopSelector:(SEL)selector;

设置动画结束后执行的回调

+ (void)setAnimationDuration:(NSTimeInterval)duration;

    设置动画执行的时间

+ (void)setAnimationDelay:(NSTimeInterval)delay; 

    设置延时执行的延时

+ (void)setAnimationStartDate:(NSDate *)startDate; 

    给动画设置一个启示时间

+ (void)setAnimationCurve:(UIViewAnimationCurve)curve; 

    设置动画播放的线性效果,UIViewAnimationCurve的枚举如下:

typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
    UIViewAnimationCurveEaseInOut,         // 淡入淡出
    UIViewAnimationCurveEaseIn,            // 淡入
    UIViewAnimationCurveEaseOut,           // 淡出
    UIViewAnimationCurveLinear            //线性
}

+ (void)setAnimationRepeatCount:(float)repeatCount; 

    设置动画循环播放次数

+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses;

    设置动画逆向执行

    三、提交动画

+ (void)commitAnimations;

    例如:

UIView * view = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    [self.view addSubview:view];
    view.backgroundColor=[UIColor redColor];
    [UIView beginAnimations:@"test" context:nil];
    [UIView setAnimationDuration:3];
    view.backgroundColor=[UIColor orangeColor];
    [UIView commitAnimations];//执行commit后,动画即开始执行

一点建议:这种创建UIView动画的方式和上一篇博客中的block方式效果相同,然而效率并不高,写的代码也会繁琐冗长,在开发中,如果没有特殊的兼容要求,使用block的方式会更高效方便。   

更多内容请访问码农之家  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值