gpt4 book ai didi

ios - 如何以编程方式展开/折叠带有约束的垂直 UIViews 构建?

转载 作者:行者123 更新时间:2023-11-28 14:24:49 24 4
gpt4 key购买 nike

我对自动布局和约束不是很熟悉。我已经构建了一个包含 7 个 subview 的 View ,这些 subview 的构建具有适合横向和纵向模式的约束。一切都很好(见图)。

此处是用于第 6 个 subview 的示例代码。宽度约束具有中等优先级,其他(左、上、下)具有高优先级。

    6View = UIView()
mainScrollView.addSubview(6View)
6View.backgroundColor = UIColor(red: 120/255, green: 120/255, blue: 120/255, alpha: 1.0)
6View.translatesAutoresizingMaskIntoConstraints = false

// constraints
let topConstraint = NSLayoutConstraint(item: 6View, attribute: .top, relatedBy: .equal, toItem: mainScrollView, attribute: .top, multiplier: 1, constant: kMainMargin)
topConstraint.priority = highContraintPriority
mainScrollView.addConstraint(topConstraint)

let leftConstraint = NSLayoutConstraint(item: 6View, attribute: .left, relatedBy: .equal, toItem: day5View, attribute: .right, multiplier: 1, constant: kMainMargin)
leftConstraint.priority = highContraintPriority
mainScrollView.addConstraint(leftConstraint)

let bottomConstraint = NSLayoutConstraint(item: 6View, attribute: .bottom, relatedBy: .equal, toItem: mainScrollView, attribute: .bottom, multiplier: 1, constant: kMainMargin)
bottomConstraint.priority = highContraintPriority
mainScrollView.addConstraint(bottomConstraint)

let widthConstraint = NSLayoutConstraint(item: 6View, attribute: .width, relatedBy: .equal, toItem: mainScrollView, attribute: .width, multiplier: (1/7), constant: -1)
widthConstraint.priority = mediumContraintPriority
mainScrollView.addConstraint(widthConstraint)

现在,当我触摸 7 个 View 中的任何一个时,我希望看到触摸的 View 展开(双倍大小)而其他 6 个 View 折叠。

您将如何实现这一目标?

非常感谢您的帮助。

最好的问候。

enter image description here

最佳答案

为每个 View 和点击时引用宽度约束

widthConstraint.constant = // expanded value 

并为所有其他 View 设置此项

otherwidthConstraint.constant = 0 

然后调用

self.view.layoutIfNeeded()

您也可以将所有这些约束放在一个数组中(var arrOfAllWidths = [NSLayoutConstraint]())并执行此操作

arrOfAllWidths.forEach { $0.constant = 0 }

然后获取被点击 View 的索引,假设它是 View 0

arrOfAllWidths[0].constant = // expanded value

也不需要优先级,并且在以编程方式为 View 提供约束时不要忘记设置它

view6.translatesAutoresizingMaskIntoConstraints = false

关于ios - 如何以编程方式展开/折叠带有约束的垂直 UIViews 构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51697780/

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