gpt4 book ai didi

ios - 如何在所有 View 都与等宽约束对齐时隐藏某些 View ?

转载 作者:行者123 更新时间:2023-11-28 18:27:26 25 4
gpt4 key购买 nike

我在 V1、V2、...V6 行中有 6 个 View ,所有 View 都在一行中依次对齐,并具有相等的宽度约束。现在在特定条件下,我想隐藏其中两个(V1 和 V6)。由于等宽约束,我无法通过获取宽度约束的导出并为其分配 Widthconstraint.constant = 0 来隐藏它们。如何应对这种情况?

尝试通过使用isHidden 或 alpha = 0 来实现,但想要正确对齐其他 View (V2、V3、V4、V5),而不需要 V1 和 V6 的空格

最佳答案

与其手动设置 width 约束或将它们分别设置为相等的约束,不如使用等间距的水平 UIStackview

然后每当需要隐藏 View 时,只需使用isHiddenUIStackview 将自动调整每个 View 的宽度以适应剩余空间。

在这里检查你的场景

import UIKit

class StackviewController : UIViewController {
let stackview: UIStackView = {
let view = UIStackView()
view.axis = .horizontal
view.distribution = .fillEqually
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()

let view1: UIView = {
let view = UIView()
view.backgroundColor = .red
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()

let view2: UIView = {
let view = UIView()
view.backgroundColor = .green
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()

let view3: UIView = {
let view = UIView()
view.backgroundColor = .blue
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()

override func viewDidLoad() {
super.viewDidLoad()

setupViews()
}

func setupViews() {
view.addSubview(stackview)

stackview.addArrangedSubview(view1)
stackview.addArrangedSubview(view2)
stackview.addArrangedSubview(view3)


NSLayoutConstraint.activate([
stackview.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 8.0),
stackview.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -8.0),
stackview.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 0),
stackview.heightAnchor.constraint(equalToConstant: 200),
])

// view2.isHidden = true
}
}

取消注释行

//        view2.isHidden = true

然后你会看到绿色 View 消失了,其他两个 View 平均占用了空间。

关于ios - 如何在所有 View 都与等宽约束对齐时隐藏某些 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57824714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com