ios - 如何在 Objective-C 中同时防止对象上的 2 个动画?

标签 ios objective-c cgaffinetransform cgaffinetransformscale

我有一个 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;
        }];
    }];
 }

关于ios - 如何在 Objective-C 中同时防止对象上的 2 个动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48784978/

相关文章:

objective-c - 刷新整个 NSFetchedResultsController tableView

ios - 在没有层次结构的两个 View Controller 之间切换

ios - 音频播放器可在模拟器中工作,但不能在iOS设备上工作

iphone - 如何相对于屏幕 iPhone 的一侧锚定 View

ios - 在翻译动画期间跟踪 UIView 位置

cgaffinetransform - 什么时候使用 CABasicAnimation 和 CAKeyFrameAnimation 和 CGAffineTransform?

ios - 在 iOS 上,CALayer 位图(CGImage 对象)如何显示到显卡上?

iphone - 通过 UITapGestureRecognizer 获取 UIScrollView 中的触摸点

iphone - 如何在 iPhone 中将 NSString 值与 NSMutableDictionary 键进行比较?

ios - 创建网页并从中异步加载应用程序数据