CATransaction Not Animating

ぐ巨炮叔叔 提交于 2019-12-09 22:38:24

问题


I've created a new View-based Application in XCode.

In the ViewController, the only code that I've modified looks like this:

- (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];
}

It should create a red square that animates for half a second as soon as the application loads. The problem is that it does not animate. I can't figure out why. I created this simple project to isolate all variables, and yet it still doesn't work.

Can anyone help out or point me in the right direction of some Core-Animation reading material. I've already gone through all of Apple's stuff.


回答1:


Your code would animate as expected if you were setting properties on a CALayer (they animate by default). For UIViews to animate, you must change their properties within a block like the following:

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

// Change properties here

[UIView commitAnimations];

CATransactions are used to group animations so that they are coordinated, or manually disable animations for a group of objects.




回答2:


Can anyone help out or point me in the right direction of some Core-Animation reading material. I've already gone through all of Apple's stuff.

See: Core Animation for Mac OS X and the iPhone: Creating Compelling Dynamic User Interfaces for an excellent walkthrough of Core Animation on views and layers.



来源:https://stackoverflow.com/questions/805502/catransaction-not-animating

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!