UIButton的ImageView 添加animation,动画执行完毕后变暗

由于项目需要,需要给一个UIButton的imageView添加动画,就是一个连续的播放帧,我们知道imageView有个属性animationImages可以用来添加动画,本来我的动画执行的好好地,但是奇怪的是每次执行完之后,总是有一个灰灰的tintcolor在UIButton上面,那个颜色就像是UIButton在(highlighted)或者是(selected)状态下出现的颜色一样。

这是我原来的代码

UIImageView * imageView = button.imageView;

        //设置动画帧

        imageView.animationImages=[NSArray arrayWithObjects:

                                      [UIImage imageNamed:@"nimationImage1"],

                                      [UIImage imageNamed:@"nimationImage2"],

                                      [UIImage imageNamed:@"nimationImage3"],

                                      [UIImage imageNamed:@"nimationImage4"],

                                      [UIImage imageNamed:@"nimationImage5"],

                                      [UIImage imageNamed:@"nimationImage6"],

                                      nil ];

        //设置动画总时间

        imageView.animationDuration=1.0;

        //设置重复次数,0表示无限

        imageView.animationRepeatCount = 5;

        //开始动画

        if (! imageView.isAnimating) {

            [imageView startAnimating];

        }




找了很久的资料,也米有找到原因,后来没办法就去查看UIButton的文档,发现UIButton有个adjustsImageWhenHighlighted属性,这个属性表示当UIbutton设置了背景图片(imageView)时,并且没有设置高粱状态下的背景图片,点击按钮是否显示有高粱状态,默认是YES。也就是说当我们点击按钮的时候会有高亮状态,当我们设置button.adjustsImageWhenHighlighted = NO时,再点击就看不到高亮状态了。


恩,感觉这个属性靠谱一些,既然默认是YES,那咱就把属性改为NO试一下吧,死马当活马医嘛,后来试了一下,还真的可以,在点击开始动画的时候把UIButton的adjustsImageWhenHighlighted属性设置为NO,并且在动画结束的时候调用stop,完美得解决了问题。

附上新代码:

[button setAdjustsImageWhenHighlighted:NO];

        

        UIImageView * imageView = button.imageView;

        //设置动画帧

        imageView.animationImages=[NSArray arrayWithObjects:

                                      [UIImage imageNamed:@"nimationImage1"],

                                      [UIImage imageNamed:@"nimationImage2"],

                                      [UIImage imageNamed:@"nimationImage3"],

                                      [UIImage imageNamed:@"nimationImage4"],

                                      [UIImage imageNamed:@"nimationImage5"],

                                      [UIImage imageNamed:@"nimationImage6"],

                                      nil ];

        //设置动画总时间

        imageView.animationDuration=1.0;

        //设置重复次数,0表示无限

        imageView.animationRepeatCount = 5;

        //开始动画

        if (! imageView.isAnimating) {

            [imageView startAnimating];

        }

        [self performSelector:@selector(stopButtonAnimation) withObject:nil afterDelay:5.0];





- (void)stopButtonAnimation{

    if ([button.imageView isAnimating]) {

        [button.imageView stopAnimating];

    }

}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值