我正在尝试使用iPhone OS 4.0(iOS4?)SDK实现游戏。在以前版本的SDK中,我一直在使用[UIView beginAnimations:context:]和[UIView commitAnimations]来创建一些动画。但是,当我查看4.0中函数的文档时,我看到了这条评论。
不鼓励使用此方法 iPhone OS 4.0及更高版本。你应该 使用基于块的动画方法 代替。
我的问题是,iPhone OS 4.0中基于块的动画是什么?我虽然使用beginAnimations:context:和commitAnimations函数来创建动画块..
答案 0 :(得分:117)
我在blog发布了一个示例:
CGPoint originalCenter = icon.center;
[UIView animateWithDuration:2.0
animations:^{
CGPoint center = icon.center;
center.y += 60;
icon.center = center;
}
completion:^(BOOL finished){
[UIView animateWithDuration:2.0
animations:^{
icon.center = originalCenter;
}
completion:^(BOOL finished){
;
}];
}];
以上代码将在2秒动画中为UIImageView *(图标)设置动画。完成后,另一个动画会将图标移回原位。
答案 1 :(得分:42)
如果您按照该链接向上滚动一下,您将看到ios4新增的动画方法。
animateWithDuration:animations:
animateWithDuration:animations:completion:
animateWithDuration:delay:options:animations:completion:
还有一些相关的过渡方法。对于其中的每一个,动画参数都是block object:
的一部分动画
包含的块对象 提交视图的更改。 这是您以编程方式进行的 改变任何可动画的属性 视图层次结构中的视图。这个 块没有参数,没有参数 回报价值。此参数不得 是NULL。
答案 2 :(得分:20)
这是一个非常简单的例子。代码只是淡出UIView并在动画完成后隐藏它:
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^ {
bgDisplay.alpha = 0.0;
}
completion:^(BOOL finished) {
bgDisplay.hidden = YES;
}];
或采用不同的格式:
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^ {
bgDisplay.alpha = 0.0;
} completion:^(BOOL finished) {
bgDisplay.hidden = YES;
}];