最近在做一個日歷控件,再給日歷控件加上動畫(點擊按鈕能夠展現(xiàn)日歷为严,再次點擊按鈕能夠消失日歷)時痢畜,我遇到了一個問題垛膝,連續(xù)快速的點擊按鈕時,日歷控件的位置會出人意料的跑偏丁稀。
最后吼拥,我找到了解決的辦法,demo的代碼如下:
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *greenView;
@end
@implementation ViewController
- (IBAction)btnClick:(id)sender {
[UIView animateWithDuration:1.0 animations:^{
if (self.greenView.layer.animationKeys) {
return;
}
NSLog(@"%@", self.greenView.layer.animationKeys.lastObject);
self.greenView.transform = CGAffineTransformRotate(self.greenView.transform, M_PI_2);
}];
}
- 我們通過
self.greenView.layer.animationKeys
能夠拿到作用到當前控件layer上的動畫keys (返回值為一數(shù)組),當其值不為空時說明此時控件還在執(zhí)行著動畫线衫,此時return凿可,避免動畫的重復加載!