在更改其锚点后无法更新(可视化)UIView的原始位置

时间:2014-01-15 22:05:31

标签: ios objective-c uiview calayer

一旦我改变了它的锚点并将其位置更新为原始位置,我就无法在其原始位置显示UIView。

例如:

我在另一个视图中有一个视图(主视图)。视图子(viewA)位于(110,234)位置,其大小为(100,100)。

以下代码显示了我尝试更改锚点A的方式,从默认(0.5,0.5)到右下角(1.0,1.0)。在我改变了它的锚点之后,我是如何尝试重置视图A层的原始位置的。

此代码位于主Viev控制器的viewDidLoad方法中。

-(void)viewDidLoad
{
    [super viewDidLoad];

    //the default anchor point of view A is (0.5,0.5) at the center of layer

    //show position of view A in output console
    NSLog(@"View Pos X: %f View Pos Y: %f",      CGRectGetMinX(self.viewA.frame),CGRectGetMinY(self.viewA.frame));

    //save the original position of view A according to the future anchor point (lower right corner)
    CGRect frame = self.viewA.frame;
    CGPoint originalPos = CGPointMake(CGRectGetMaxX(frame), CGRectGetMaxY(frame));

    //set the new anchor point for view A
    self.viewA.layer.anchorPoint = CGPointMake(1.0, 1.0);

    //show position of view A in output console
    NSLog(@"View Pos X: %f View Pos Y: %f", CGRectGetMinX(self.viewA.frame),CGRectGetMinY(self.viewA.frame));

    //try to restore the position of view A layer according the new anchor point (1.0,1.0)
    self.viewA.layer.position = originalPos;

    //update visually the layer of view A (i think this is not necessary)
    [self.viewA setNeedsDisplay];

    //show position of view A in output console
    NSLog(@"View Pos X: %f View Pos Y: %f", CGRectGetMinX(self.viewA.frame),CGRectGetMinY(self.viewA.frame));
}

但在视觉上,视图A不会回到原始位置。 看着输出控制台,看起来该视图位于初始位置。

View Pos X: 110.000000 View Pos Y: 234.000000
View Pos X: 60.000000 View Pos Y: 184.000000
View Pos X: 110.000000 View Pos Y: 234.000000

为什么呢?发生了什么?我的代码有什么问题?

如果有人能帮助我,我将非常高兴。

0 个答案:

没有答案