我有一个工作视图动画,它会卷起容器视图,而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是可接受的值
答案 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
块会不会搞砸它。