移动CALayer留下原始的“残像”

时间:2013-11-13 22:50:42

标签: animation calayer

环境: Xcode 5.0.2 / iOS 7

目标:仅将图层从“A”点移动到“B”点。
问题:“移动”就像“复制”一样。

我尝试了2种移动范式:
1)设置图层的位置;和
2):

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
animation.fromValue = [layer valueForKey:@"position"];
animation.toValue = [NSValue valueWithCGPoint:point];
layer.position = point;
[layer addAnimation:animation forKey:@"position"];

注意: CALayer @ destination可以访问,并且可以从容器层中删除它。
      CALayer @ origin显然是孤儿。

问题:什么会导致此“移动”充当“副本”?
任何补救措施?

奇怪注意: 此代码在不同的UIViewController视图中正常工作。

1 个答案:

答案 0 :(得分:1)

问题源于在UIViewController中设置CALayers
  - (void)viewDidLayoutSubviews {}< - 不要在这里设置CALayers!

而不是正确的
- (void)viewDidLoad {}< - 首选点。

在viewdidLayoutSubviews {}中创建CALayers会导致任何位置更改为COPY vs MOVE。
但是,在viewDidLoad {}中创建CALayers的行为正确:任何位置更改都是MOVE。

对我来说似乎是一个错误。