隐式动画无法在iPhone上运行

时间:2011-08-22 10:53:36

标签: iphone core-animation

我遇到了以下线程,它解决了我的部分问题。 (我试着在那里提出我的问题,但似乎最好把它放在一个新线程中。)

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对象,如下所示:

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 个答案:

答案 0 :(得分:2)

在进行了一些搜索之后,我在Core Animation Programming Guide上看到了以下内容:

  

重要说明:从没有runloop的线程修改图层属性时,必须使用显式事务。

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

答案 1 :(得分:-2)

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

相关问题