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工作正常,但会闪烁,因为它首先显示视图,然后将其移动到那里。有没有办法避免这种情况?我相信,一旦我在视图上设置了变换,帧就不再有效:这是正确的,帧的左上角(原点)会随着变换而移动,如果不想计算帧的新点,请使用边界原点