我有一个UILabel
,每次触摸它时,它都会使用CGAffineTransformMakeScale
和动画进行缩放,然后使用动画恢复到实际大小。现在,如果在最后一个动画结束之前触摸它,它将缩放缩放后的对象而不是主要对象的实际大小,因此它将缩放得超出其应缩放的范围。如何预防这个问题?我想在最后一个比例尺结束后再触摸物体的主要尺寸。
这是我的代码:
(void)MyLabelTouched
{
[UIView animateWithDuration:.15 animations:^{
MyLabel.transform = CGAffineTransformMakeScale(1.5,1.5);
} completion:^(BOOL finished) {
[UIView animateWithDuration:.15 animations:^{
MyLabel.transform = CGAffineTransformIdentity;
}];
}];
}
最佳答案
尝试这个
(void)MyLabelTouched
{
if(animRunning){return;}
animRunning = YES;
[ MyLabel.layer removeAllAnimations];
MyLabel.transform = CGAffineTransformIdentity;
[UIView animateWithDuration:.15 animations:^{
MyLabel.transform = CGAffineTransformMakeScale(1.5,1.5);
} completion:^(BOOL finished) {
[UIView animateWithDuration:.15 animations:^{
MyLabel.transform = CGAffineTransformIdentity;
animRunning = NO;
}];
}];
}