我正在尝试从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];
可能是什么问题?
答案 0 :(得分:6)
您可能已将动画封装在另一个动画中,并且其持续时间正用于两个动画。
答案 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];
}];
}