将动画移动到iOS4块的问题

时间:2010-08-05 15:33:46

标签: iphone animation ios4

我有一个工作视图动画,它会卷起容器视图,而containerview.subviews会发生变化。 (在动画之前将显示UITableView,在它是自定义视图之后,名称为keypadView)

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.75];
[UIView setAnimationDelegate:self];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp 
                       forView:containerView 
                         cache:YES];
[secondView removeFromSuperview];
[containerView addSubview:keypadView];
[UIView commitAnimations];

现在我想为iOS4基于块的api重写这段代码,因为我想使用完成块。我写了这个:

[UIView transitionWithView:containerView
                  duration:.75 
                   options:UIViewAnimationTransitionCurlUp
                animations:^{
                    NSLog(@"Hey Ho");
                    [secondView removeFromSuperview];
                    [containerView addSubview:keypadView];
                } 
                completion:NULL];

视图切换 - 但不是动画。

我的代码出了什么问题?

修改

completion: ^(BOOL completed){
    NSLog(@"completed %d", completed);
}
根据文档

没有帮助,因为NULL是可接受的值

4 个答案:

答案 0 :(得分:2)

UIView类引用中的示例可能错误 - 或者在animations块对象中添加和删除视图时可能存在错误,但这是我能够实现的唯一方法让它工作如下:

[secondView removeFromSuperview];
[containerView addSubview:keypadView];
[UIView transitionWithView:containerView
                  duration:.75
                   options:UIViewAnimationOptionTransitionCurlUp
                animations:^{}
                completion:^(BOOL finished) {
                    NSLog(@"finished %d", finished);
                }];

答案 1 :(得分:2)

做的: 选项:UIViewAnimationOptionTransitionCurlUp 代替: 选项:UIViewAnimationTransitionCurlUp

这就是您的代码现在可以运行的原因:)。

答案 2 :(得分:1)

您是否将[UIView beginAnimations:nil context:nil];放在新区块上方?

答案 3 :(得分:1)

完成块始终是NULL吗?尝试在那里放一个NSLog语句。我不知道NULL块会不会搞砸它。