iOS Swift - 如何隐藏UIView元素并声明空间?

时间:2015-10-19 17:00:47

标签: ios swift uiview hide hidden

我是来自Android背景的iOS新手。

当将.hidden = true应用于UIView时,它会被隐藏,但它仍占用它的空间。有没有办法在视图消失时声明这个空间(类似于Android中的setVisibility(View.GONE)?

由于

2 个答案:

答案 0 :(得分:12)

如果您定位的是iOS 9或更高版本,则可以使用UIStackView自动完成此操作(类似于Android上的LinearLayout)。当您将UIStackView中包含的视图设置为隐藏时,其余视图将转移到回收空间。

您可以使用

在动画块内设置view.hidden = true来设置移位动画
UIView.animateWithDuration(_:delay:options:animations:completion:)

等。

如果您定位的iOS版本低于9(不支持UIStackView),则无论何时隐藏或显示视图,都必须手动更新自动布局约束。

例如,假设您有3个视图堆叠在一起,称为view1,view2和view3,您首先通过调用

删除view2和view3的顶部约束
view2TopConstraint.active = false
view3TopConstraint.active = false

然后在视图3上添加一个顶部约束,该约束固定在view1的底部

let newView2TopConstraint = NSLayoutConstraint(item: view3, attribute: .Top, relatedBy: .Equal, toItem: view1, attribute: .Bottom, multiplier: 1.0, constant: 0.0)
newView2TopConstraint.active = true

有很多方法可以实现这一目标。这只是一个例子。

答案 1 :(得分:-1)

没有可见性设置。但你可以将alpha设置为0