Maison  >  Questions et réponses  >  le corps du texte

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

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

伊谢尔伦伊谢尔伦2765 Il y a quelques jours397

répondre à tous(3)je répondrai

  • 迷茫

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

    Il n'existe aucune API pertinente permettant de déterminer si l'animation est en cours d'exécution. Il existe uniquement la méthode suivante, qui peut être déterminée en jugeant 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();
        }];

    répondre
    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;
        
    }

    répondre
    0
  • 伊谢尔伦

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

    Personnellement, il est préférable d'utiliser l'attribut bool de label pour enregistrer

    répondre
    0
  • Annulerrépondre