Rumah  >  Soal Jawab  >  teks badan

ios - 如何判断CALayer正在做动画?

场景:存在一个UILabel实例,对它做缩放,如何清除知道他正在缩放?

伊谢尔伦伊谢尔伦2716 hari yang lalu359

membalas semua(3)saya akan balas

  • 迷茫

    迷茫2017-04-18 09:33:36

    Tiada API berkaitan yang boleh menentukan sama ada animasi sedang dilaksanakan. Hanya terdapat kaedah berikut, yang boleh ditentukan dengan menilai isAnimating

    // 设置初始值(最好使用全局或者属性)
        __block BOOL isAnimating =YES;
        self.transform = CGAffineTransformMakeScale(6, 6);
        [UIView animateKeyframesWithDuration:0.333 delay:0 options:0 animations:^{
            
            
            self.transform = CGAffineTransformMakeScale(1, 1);
        } completion:^(BOOL finished) {
            // 成功回调改为NO
            isAnimating = NO;
            completion();
        }];

    balas
    0
  • ringa_lee

    ringa_lee2017-04-18 09:33:36

    -(BOOL)isAnimated
    {
        BOOL animated = self.layer.animationKeys.count > 0;
        
        for (UIView *subView in self.subviews) {
            
            animated |= subView.isAnimated;
        }
        
        return animated;
        
    }

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:33:36

    Secara peribadi, sebaiknya gunakan atribut bool label untuk merakam

    balas
    0
  • Batalbalas