CALayer协调不稳定的行为

时间:2011-10-09 22:10:41

标签: objective-c caanimation

我和CALayers有一段时间的麻烦。我创建了一个添加到UIImageView的图层。我希望这个图层在屏幕上获得与另一个视图相同的位置,就好像它是它的副本一样。但是当图层被添加到UIImageView时,它的坐标在NSLog中与“复制”视图相同,但是图层位置永远不会相同,每次我尝试看到不同的东西。我应该错过一些东西。

    CALayer*layer=[CALayer layer];
        layer.bounds =copiedImageView.bounds;
        layer.contents=copiedImageView.layer.contents;


       CGPoint theCenter=[targetImageView convertPoint:copiedImageView.center fromView:self.view];            
       [layer setPosition:theCenter];    

        [targetImageView.layer addSublayer:layer];
        copiedImageView.layer.hidden=YES;

如果我明确地设置了layer.position它似乎工作(例如(0,0)层中心总是在targetImageView的左上角),这是合乎逻辑的。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

设置框架,而不是边界。 Frame确定图层相对于其父图层的位置。

layer.frame =copiedImageView.frame;

除非您已应用转换。然后你通过分别设置边界和位置大致以正确的方式进行。