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];

    }

}




你可能感兴趣的:(iOS开发,UIButton)