iOS)如何更改已添加的子视图的位置

时间:2015-09-05 16:19:51

标签: ios uiview frame addsubview

我有三个视图:topView,middleView,bottomView。

当我点击topView中的按钮时,我想在topView和middleView之间插入alpha视图。

但是已经通过在viewDidLoad中调用方法[self.view addsubView:]找到了middleView和bottomView。

所以我必须在alpha视图下面更改middleView和bottomView ...

所以我调用了方法' setFrame',但已经添加的视图没有移动到我想放置它们的位置。

所以我必须调用方法' removeFromSuperView'但是有一个很大的问题,即middleView和bottomView是包含多个子视图的主视图...

我不知道如何解决这个问题,请帮助我!

! middleView和bottomView,他们只需要关闭,移动问题很简单。

**** UPDATE 我的问题代码如下:

authCodeView是alphaView

authCodeView = [[UIView alloc] initWithFrame:CGRectMake(0, topView.frame.size.height + 8, [UIScreen mainScreen].bounds.size.width, topView.frame.size.height)];
[authCodeView setBackgroundColor:[UIColor whiteColor]];
authCodeField = [[UITextField alloc] initWithFrame:CGRectMake(30, 0, authCodeView.frame.size.width - 30, authCodeView.frame.size.height)];
authCodeField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"인증번호 입력" attributes:@{NSForegroundColorAttributeName:tempGray}];
[authCodeView addSubview:authCodeField];

NSLog(@"%f",authCodeView.frame.origin.y+authCodeView.frame.size.height + 8);
[middleView setFrame:CGRectMake(100, authCodeView.frame.origin.y+authCodeView.frame.size.height + 8, [UIScreen mainScreen].bounds.size.width, 308.0f)];
[bottomView setFrame:CGRectMake(0, middleView.frame.origin.y+middleView.frame.size.height+8, [UIScreen mainScreen].bounds.size.width, bottomView.frame.size.height)];


[self.view addSubview:authCodeView];
[self.view addSubview:middleView];
[self.view addSubview:bottomView];

1 个答案:

答案 0 :(得分:1)

  

所以我调用了方法'setFrame',但是已添加的视图没有移动到我想放置的位置。

然后你将错误的矩形传递给-setFrame:。该方法改变了视图的框架,即它在超视图的坐标系中的位置和大小。

  

所以我必须调用方法'removeFromSuperView',但是有一个很大的问题,即middleView和bottomView是具有多个子视图的主视图

您只需更改其位置即可删除视图。如果您想将其添加到其他视图中,或者根本不想在超级视图中使用它,则只需将其删除即可。也就是说,如果middleView之类的视图包含子视图,则会出现问题 - 如果您将其从超级视图中移除,或者如果您更改middleView的位置,那么这些视图会与middleView同步等等。

  

我不知道如何解决这个问题,请帮帮我!

在寻求帮助时,您确实需要发布能够重现您尝试解决的问题的代码。