2011-08-22 52 views
2

我遇到了以下线程,这些线索整理了我的部分问题。 (我试图在那里提出我的问题,但似乎最好把它放在一个新线程中)。隐式动画无法在iPhone上工作

Does iPhone OS support implicit animation?

我的问题的另一部分是以下

通过justinkmunger以上的线程所建议的办法正常工作对我来说:

CALayer *labelLayer = self.label.layer; 
labelLayer.delegate = self; 
layer.position = CGPointMake(labelLayer.position.x, labelLayer.position.y + 50); 

不过,我有两个问题在这里:

1)我将如何将这种方法应用于作为UIView图层对象的子图层的CALayer对象ct,如下所示:

CALayer* l = [CALayer layer]; 
l.frame = CGRectMake(0, 0, 200, 350); 
layer.opacity = 0; 
[self.view.layer addSublayer:l]; 

l.delegate = self; 
[CATransaction setAnimationDuration:5]; 
1.opacity = 1; // DOES NOT ANIMATE!! Event if i add: self.view.layer.delegate = self; 

2)为什么这种方法不适用于我的UIViewController视图中的图层?

CALayer *layer = self.view.layer; 
layer.delegate = self; 
layer.opacity = 0; 
[CATransaction setAnimationDuration:5]; 
layer.opacity = 1; // DOES NOT ANIMATE!! 
Many thanks AF 

希望有人能帮助 干杯 AF

回答

2

做一些更多的搜索我碰到后,下面就Core Animation Programming Guide

重要:当从没有runloop的线程修改图层属性时,必须使用显式tran sactions。

我想从按钮点击激活图层的动画。不知道这些是否在单独的线程上触发并导致动画失败。只是想分享这个发现,以防其他人发现它有用。

-2

并不需要[CATransaction begin];[CATransaction commit];

+0

我想要做隐式动画,我相信你不需要做开始/提交 – Abolfoooud

+0

Guesswork真的最适合于对问题的评论,而不是回答。在回答问题之前进行验证 –