Ios 移动UIView';通过设置superview的“中心”属性

Ios 移动UIView';通过设置superview的“中心”属性,ios,uiview,positioning,cgaffinetransform,Ios,Uiview,Positioning,Cgaffinetransform,我有一个很奇怪的问题。我试图在视图中手动旋转和移动UIView的superview,结果显示如下: - (void)viewWillAppear:(BOOL)animated { // ... [self.view.superview setTransform:CGAffineTransformMakeRotation(M_PI/2)]; [self.view.superview setCenter:CGPointMake(100, 200)]; // (100, 20

我有一个很奇怪的问题。我试图在
视图中手动旋转和移动UIView的superview,结果显示如下:

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

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

    // ...
}
由于某些原因,旋转已正确应用,但superview的中心(即位置)根本没有移动。我还尝试将变换设置为
cGraffeTransform
,这是旋转+平移(或仅平移)的组合,也不会移动superview

如果有区别,
self.view.superview
是最上面的视图(即
self.view.superview.superview
nil

我是不是错过了一些很简单的东西


编辑:nielsbot的评论是正确的,把它放在viewDidLoad中是有效的,但是到那时,视图已经出现了,所以它捕捉到新位置的地方会闪烁。有办法解决这个问题吗

尝试设置视图的边界,以便:

[self.view.superview setBounds:CGRectMake(x,y,self.view.superview.width,self.view.superview.height)];
这会将您的视图移动到您给他的x,y位置 但这当然不是中心


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

viewdide中尝试它
——您的代码表示
viewwillbeen
。可能之后会出现一些布局代码并撤消您的更改。首先,通过“正确应用了旋转,但超级视图根本没有移动”来明确您想说什么?@nielsbot工作正常,但会闪烁,因为它首先显示视图,然后将其移动到那里。有没有办法避免这种情况?我相信,一旦我在视图上设置了变换,帧就不再有效:这是正确的,帧的左上角(原点)会随着变换而移动,如果不想计算帧的新点,请使用边界原点