当前位置:  开发笔记 > IOS > 正文

CATransaction不动画

如何解决《CATransaction不动画》经验,为你挑选了1个好方法。

我在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的所有工作.



1> Brad Larson..:

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

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

// Change properties here

[UIView commitAnimations];

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


我认为可能会发生的是,在添加新的子视图之后,但在触发动画之前,运行循环没有达到目的.因此,它只是将视图放在最终位置.尝试将动画代码移动到单独的方法,并使用performSelector:withObject:afterDelay:延迟0.01秒触发该方法.这应该在添加子视图后激活动画.
推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有