我正在为iOS开发一个应用程序,我正在使用带有AutoLayout ON的Storyboard。我的一个视图控制器有一组3个标签,在某些情况下我想让第二个标签消失。
如果我使用setHidden:TRUE方法,标签将变为不可见但显然在视图中占用空间。
有人能指出我正确的方向吗?
答案 0 :(得分:6)
我认为你可以将约束与viewController的头文件链接起来。然后修改约束并提交更改。
<强>编辑:强>
1)为约束创建IBOutlet。
2)修改约束,例如:self.yourConstraint.constant = 0.0;
3)提交新约束:[viewForUpdate setNeedsUpdateConstraints];
答案 1 :(得分:5)
最简单的解决方案是将要隐藏的视图放在StackView
中。然后隐藏元素只需将其隐藏:
_myElement.hidden = YES;
StackView
会压制隐藏的元素,它们将变得不可见。
答案 2 :(得分:2)
您需要通过调整其框架来移动其他视图。这可以直接完成,或者如果使用自动布局,则通过为隐藏的视图提供垂直间距约束。
如果有许多其他视图依赖于隐藏/显示视图,请创建包含所有相关视图的另一个子视图。依赖视图可以静态布局在该父级上,并且该父级可以调整它的帧(再次,直接或通过自动布局)。
view
|
--- view to hide
|
--- common parent (move this with auto layout or directly)
|
--- subview's with position dependent on view to hide
--- ...
答案 3 :(得分:2)
处理此问题的最简单,最有效的方法是使用堆栈视图。将标签插入水平/垂直(它们出现在UI上的方向)堆栈视图,堆栈视图将在内部处理间距。可以根据需要调整对齐,间距等附加属性。确保在堆栈视图和相邻元素之间重新建立约束,因为一旦将视图添加到堆栈视图中,如果其约束被清除,则将其全部添加到
答案 4 :(得分:1)
这是一个迟到的答案/解决方案,但我刚刚建立了一个类别,就是这样 - 隐藏没有黑色空格的视图。