0

我有一个自定义视图,其中 3 个按钮占据全宽。

我将类导入到我想隐藏在按钮(menuBtn)上的控制器,并通过执行以下操作使其他按钮之一(searchbarBtn)更大以填充空白空间:

`self.topMenuView.searchbarBtn.frame = CGRectMake(self.topMenuView.searchbarBtn.frame.origin.x, self.topMenuView.searchbarBtn.frame.origin.x, self.topMenuView.searchbarBtn.frame.size.width + self.topMenuView.menuBtn.frame.size.width , self.topMenuView.searchbarBtn.frame.size.height);`

我这样做viewWillLayoutSubviews(也试过viewWillAppear),我打电话给

[self.topMenuView.searchbarBtn setNeedsDisplay];

但什么也没发生。

4

1 回答 1

0

按钮的布局属性会覆盖您的框架设置,因为根据定义在布局传递之前viewWillLayoutSubvies调用。你应该设置

self.topMenuView.menuBtn.hidden = YES;

并在 之间使用自动布局约束(在界面构建器或代码中)menuBtnsearchbarBtntopMenuView确保您的按钮根据需要增长。

作为一般规则,我们应该努力创建界面,以便视图能够正确定位自己,前提是它们的内部状态设置正确并且形成了正确的约束,而不需要我们进行明确的更正。

于 2013-09-26T10:31:17.793 回答