隐藏视图并删除空格

时间:2014-05-12 16:03:04

标签: ios objective-c autolayout

我正在为iOS开发一个应用程序,我正在使用带有AutoLayout ON的Storyboard。我的一个视图控制器有一组3个标签,在某些情况下我想让第二个标签消失。

如果我使用setHidden:TRUE方法,标签将变为不可见但显然在视图中占用空间。

有人能指出我正确的方向吗?

5 个答案:

答案 0 :(得分:6)

我认为你可以将约束与viewController的头文件链接起来。然后修改约束并提交更改。

<强>编辑:

1)为约束创建IBOutlet。

Image here, cant upload photos for my reputation

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)

这是一个迟到的答案/解决方案,但我刚刚建立了一个类别,就是这样 - 隐藏没有黑色空格的视图。

https://github.com/neevek/UIView-Visibility