0

环境: 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 @ 目标是可访问的,并且能够将其从其容器层中删除。
CALayer @ origin 显然是孤立的。

问题:什么会导致这个“移动”充当“副本”?
有什么补救措施吗?

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

4

1 回答 1

1

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

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

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

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

于 2013-11-14T06:19:09.507 回答