我第一次从控制器A到B时有两个ViewController A和B它的工作正常,但是当我回到控制器A然后回到B UIView动画块时忽略了完成块被调用的持续时间立即。 任何人都知道为什么这样做?
解决方案 最后(Me& Mawoon)在开始动画编写此单行代码之前找到了我自己的解决方案。
[UIView setAnimationsEnabled:YES];
请参阅下面的代码。
-(void)doAnimation
{
__weak typeof(self) weakSelf = self;
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];
}];
}
答案 0 :(得分:2)
首先,您必须对调用块本身进行弱引用,然后启用动画,因为当您从视图控制器弹出时,动画将被释放,因此您需要再次启用动画。
[UIView setAnimationsEnabled:YES];
所以这是完整的代码:
-(void)doAnimation
{
__weak typeof(self) weakSelf = self;
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];
}];
}