0

我有一个非常奇怪的问题。我试图像这样手动旋转和移动 UIView 的超级视图viewDidAppear

- (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.superviewis nil)。

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

编辑:nielsbot 的评论是正确的,因为将它放入 viewDidLoad 是有效的,但是到那时,视图已经出现,所以它会闪烁到新位置。有没有解决的办法?

4

1 回答 1

0

尝试设置视图的边界,这样:

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

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

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

于 2012-08-23T07:27:32.480 回答