通过设置其中心属性来移动UIView的超级视图

时间:2012-08-23 07:22:06

标签: ios uiview positioning cgaffinetransform

我有一个非常奇怪的问题。我试图在viewDidAppear中手动旋转并移动UIView的超视图,如下所示:

- (void)viewWillAppear:(BOOL)animated
{
    // ...

    [self.view.superview setTransform:CGAffineTransformMakeRotation(M_PI/2)];
    [self.view.superview setCenter:CGPointMake(100, 200)]; // (100, 200) is toy value

    // ...
}

由于某种原因,正确应用了旋转,但是根本没有移动超视图的中心(即位置)。我也尝试将变换设置为CGAffineTransform,它是旋转+平移(或仅仅是翻译)的组合,也不会移动超视图。

如果它有所不同,self.view.superview是最顶层的视图(即self.view.superview.superviewnil)。

我在这里错过了一些非常简单的事情吗?

编辑:nielsbot的评论是正确的,因为它在viewDidLoad中工作,但到那时,视图已经出现,所以有一个闪烁,它捕捉到新的位置。有没有解决的办法?

1 个答案:

答案 0 :(得分:0)

尝试设置视图的边界:

[self.view.superview setBounds:CGRectMake(x,y,self.view.superview.width,self.view.superview.height)];

这应该将您的视图移动到您给他的x,y位置 但当然这不是中心

中心只代表一个特殊点,例如用于旋转