我有一个非常奇怪的问题。我试图在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.superview
是nil
)。
我在这里错过了一些非常简单的事情吗?
编辑:nielsbot的评论是正确的,因为它在viewDidLoad中工作,但到那时,视图已经出现,所以有一个闪烁,它捕捉到新的位置。有没有解决的办法?
答案 0 :(得分:0)
尝试设置视图的边界:
[self.view.superview setBounds:CGRectMake(x,y,self.view.superview.width,self.view.superview.height)];
这应该将您的视图移动到您给他的x,y位置 但当然这不是中心
中心只代表一个特殊点,例如用于旋转