我遇到了以下线程,它解决了我的部分问题。 (我试着在那里提出我的问题,但似乎最好把它放在一个新线程中。)
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
答案 0 :(得分:2)
在进行了一些搜索之后,我在Core Animation Programming Guide上看到了以下内容:
重要说明:从没有runloop的线程修改图层属性时,必须使用显式事务。
我正在尝试通过按钮点击激活图层的动画。不确定这些是否在单独的线程上触发并导致动画失败。只是想到分享这个发现,以防其他人发现它有用。
答案 1 :(得分:-2)
您不需要[CATransaction begin];
和[CATransaction commit];