2

ビューが最初に読み込まれるとアニメーションが適用されますが、その後ビューが読み込まれるたびに何も起こりません。

簡単なはずですが...

コード:

- (void)viewDidAppear:(BOOL)animated{    
[self animateLabel];    
}

- (void)viewWillDisappear:(BOOL)animated{
[self.labelMarkTheSpot.layer removeAllAnimations];  
}

- (void)animateLabel{

UIViewAnimationOptions options = (UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionBeginFromCurrentState);

CGAffineTransform scaleFactor = CGAffineTransformMakeScale(1.1, 1.1);
[UIView animateWithDuration:0.2 delay:0 options:options animations:^{
    self.labelMarkTheSpot.transform = scaleFactor;        
}
completion:nil];
}

(viewWillAppear でアニメーションを開始しても違いはありません)

4

1 に答える 1

3

animateLabelアニメーションの前にビューをスケールにリセットするには、先頭に行を追加します。

self.labelMarkTheSpot.transform = CGAffineTransformMakeScale(1.0, 1.0);

何が起こっているのかは、1.1、1.1にアニメーション化された後です。それはそのままで、ビューが再表示されたときのアニメーションは何もしません(1.1から1.1)。1.0(またはアニメーションの開始点として最初に設定したいもの)にリセットすると、常に1.0から1.1になります。

于 2013-01-21T17:05:30.710 に答える