CATransaction不动画

时间:2009-04-30 05:54:39

标签: iphone objective-c cocoa-touch core-animation

我在XCode中创建了一个新的基于视图的应用程序。

在ViewController中,我修改过的唯一代码如下:

- (void)viewDidLoad {
[super viewDidLoad];

UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
newView.backgroundColor = [UIColor redColor];
[self.view addSubview:newView];


[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.5f] forKey:kCATransactionAnimationDuration];

newView.layer.frame = CGRectMake(20,20,220,220);

[CATransaction commit];
}

一旦应用程序加载,它应该创建一个动画半秒的红色方块。问题是它没有动画。我无法弄清楚为什么。我创建了这个简单的项目来隔离所有变量,但它仍然不起作用。

任何人都可以帮助或指出一些核心动画阅读材料的正确方向。我已经完成了Apple的所有工作。

2 个答案:

答案 0 :(得分:5)

如果您在CALayer上设置属性(默认设置为动画),您的代码将按预期动画。要使UIViews设置动画,您必须在块中更改其属性,如下所示:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0f];

// Change properties here

[UIView commitAnimations];

CATransactions用于对动画进行分组,以便协调它们,或手动禁用一组对象的动画。

答案 1 :(得分:0)

任何人都可以帮助或指出一些核心动画阅读材料的正确方向。我已经完成了Apple的所有工作。

请参阅:Core Animation for Mac OS X and the iPhone: Creating Compelling Dynamic User Interfaces,了解核心动画在视图和图层上的精彩演练。