4

我正在尝试从 UIView 子类中的一个子视图上执行动画。

动画持续时间忽略我尝试将其设置为的任何值,并且只执行约 2 秒的永久持续时间。finished标志返回 True 。

[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

7

您可能将动画封装在另一个动画中,并且两个动画都使用了它的持续时间。

于 2013-07-16T16:39:46.783 回答
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 回答