2012-08-23 31 views
0

我有一个很奇怪的问题。我试图旋转和viewDidAppear手动移动一个UIView的上海华像这样:通过设置其中心属性来移动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

在'viewDidAppear'中尝试它 - 您的代码表示'viewWillAppear'。在*出现*之后,可能会运行一些布局代码并撤消更改。 – nielsbot

+0

首先,通过“旋转正确应用但超视图完全不移动”来说清楚你想说的是什么? – Nayan

+0

@nielsbot工作,但有一个闪烁,因为它首先显示视图,然后在那里移动它。有没有办法避免这种情况? – kevlar

回答

0

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

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

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

中心仅有代表例如用于旋转的特殊点

+0

我相信,一旦我在视图上设置了转换,该框架就不再有效:http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW3 – kevlar

+0

这就是纠正帧的左上角(原点)随着变换而移动的情况,如果您不想为帧计算新点,请使用边界原点 – lukaswelte

相关问题