4

サブビューの 1 つで、UIView サブクラス内からアニメーションを実行しようとしています。

アニメーションの長さは、設定しようとした値を無視し、約 2 秒の永続的な持続時間で実行されます。フラグはfinishedTrue を返します。

[UIView animateWithDuration:0.5f animations:^{
    img.frame = newFrame;
} completion:^(BOOL finished) {
    NSLog(@"result: %d", finished);
}];

古い方法を使用している場合、正常に動作します。

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5f];
img.frame = newIconRectFinal;
[UIView commitAnimations];

何が問題なのですか?

4

2 に答える 2

1

アニメーションを開始する前に、このコード行を使用して、この 1 行のコードを記述します。

[UIView setAnimationsEnabled:YES];

以下のコードを参照してください。期間を無視しないようになりました

-(void)doAnimation
 {
   view2=(UIView*)[self.view viewWithTag:100];
   UIView setAnimationsEnabled:YES];
   [UIView animateWithDuration:3.0 animations:^{       
    view2.frame=CGRectMake(0, 30, 1024,768);
    view2.alpha=1.0       
     completion:^(BOOL finished){  
     view2.frame=CGRectMake(0, 0, 1024,768);
       view2.alpha=0.0 
    [weakSelf doAnimation];  
      }];
   }
于 2014-05-22T11:58:35.063 に答える