iOS Swift - 如何隐藏 UIView 元素并占用空间?

标签 ios swift uiview hide hidden

我是 iOS 新手,有 Android 背景。

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

谢谢

最佳答案

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

您可以通过在动画 block 中设置 view.hidden = true 来为移动设置动画

UIView.animateWithDuration(_:delay:options:animations:completion:)

等等。

如果您的目标是低于 9 的 iOS 版本(其中不支持 UIStackView),您必须在隐藏或显示 View 时手动更新自动布局约束。

例如,假设您有 3 个 View 相互堆叠,分别称为 view1、view2 和 view3,您首先通过调用移除 view2 和 view3 的顶部约束

view2TopConstraint.active = false
view3TopConstraint.active = false

然后在固定到 view1 底部的 view3 上添加顶部约束

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

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

关于iOS Swift - 如何隐藏 UIView 元素并占用空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33219984/

相关文章:

swift - Swift 中的底部类型

ios - 如何从我的 UIView 中仅删除用户添加的 subview

ios - 'WKinterfaceGroup' 没有可见的@interface 声明选择器 : has something changed in iOS 8. 3?

iOS 应用内购买 : Prices don't match selected App Store Connect tiers

ios - 按值将对象数组映射到新的数组数组中

ios - 没有 "Index out of Range"swift 的实时重新加载 UITableview

iOS UIView绘制矩形调整大小动画

iphone - 更改导航 Controller 时我的 subview 会发生什么情况?

ios - 什么速率的推送通知会触发 TooManyRequests 错误?

ios - 如何在 xcode 7.1 中减小 ios APP 的大小