简体   繁体   中英

CATransaction Not Animating

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.

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM