【问题标题】:iOS Swift - How to hide a UIView element and claim the space?iOS Swift - 如何隐藏 UIView 元素并声明空间?
【发布时间】:2016-01-18 03:05:26
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: ios swift uiview hide hidden


    【解决方案1】:

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

    您可以通过在动画块内设置view.hidden = true 来为班次设置动画

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

    或类似的。

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

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

    view2TopConstraint.active = false
    view3TopConstraint.active = false
    

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

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

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

    【讨论】:

    • 如果我能给你 +2 我会的,相信我 :) 谢谢你这解决了我的问题。
    • 我们可以不使用 stackview 做到这一点吗?
    【解决方案2】:

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

    【讨论】:

    • 这个不占空间,还是会占空间
    猜你喜欢
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多