环境: 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视图中正常工作。
答案 0 :(得分:1)
问题源于在UIViewController中设置CALayers
- (void)viewDidLayoutSubviews {}< - 不要在这里设置CALayers!
而不是正确的:
- (void)viewDidLoad {}< - 首选点。
在viewdidLayoutSubviews {}中创建CALayers会导致任何位置更改为COPY vs MOVE。
但是,在viewDidLoad {}中创建CALayers的行为正确:任何位置更改都是MOVE。
对我来说似乎是一个错误。