【发布时间】:2012-08-18 16:12:44
【问题描述】:
我有一个很奇怪的问题。我试图在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 是有效的,但到那时,视图已经出现,因此它会在捕捉到新位置的位置闪烁。有没有解决的办法?
【问题讨论】:
-
在
viewDidAppear中试试——你的代码是viewWillAppear。一些布局代码可能会在出现之后运行并撤消您的更改。 -
首先,通过“正确应用旋转但根本没有移动超级视图”来明确你想说什么??
-
@nielsbot 这行得通,但是有一个闪烁,因为它首先显示视图,然后将其移动到那里。有没有办法避免这种情况?
标签: ios uiview positioning cgaffinetransform