gpt4 book ai didi

ios - 使用嵌套的 UIStackviews 隐藏 UIStackView

转载 作者:搜寻专家 更新时间:2023-11-01 06:34:40 26 4
gpt4 key购买 nike

前言:我偷看了this post它并没有解决我的问题。这是一个 link to a repo这显示了我遇到的错误。

我有一个 UIViewController 和一个包含嵌套水平 UIStackViews 的垂直 UIStackView

有两个 UIStackViews 被切换。如果显示 UIStackViewNumber1,则隐藏 UIStackViewNumber2,反之亦然。我本来把 View 设置为显示两者,但是太拥挤了。

UIStackView
stackViewThatDoesntMove
stackViewNumber1
stackViewNumber2
stackViewThatDoesntMove

如果我不隐藏任何内容,一切正常,不会出现 AutoLayout 错误。每个 UIStackViews 都有包含按钮、标签、 slider 等的嵌套 stackViews。我发现 View 太拥挤了,所以我想我应该设置隐藏其中一个 stackViews 并设置动画变化,如下所示:

stackViewNumber2.isHidden = true

UIView.animate(withDuration: 0.33,
options: [.curveEaseOut],
animations: {
self.stackViewNumber1.layoutIfNeeded()
self.stackViewNumber2.layoutIfNeeded()
self.view.layoutIfNeeded()
},
completion: nil)
}

虽然我在模拟器和物理设备上获得了预期的结果,但当我隐藏其中一个 UIStackView 时,我的控制台充满了 AutoLayout 错误。

我看了一下this post我的问题似乎很简单。我采用了最少“簿记”的方法,并将 stackViewNumber2 包装在 UIView 中。我最终遇到了与最初没有将 stackViewNumber1 包装在 UIView 中的相同的一组错误。

我还读了Apple's documentation on UIStackView并尝试使用 arrangedSubviews() 来设置约束 isActive = false,如下所示:

for subview in stackViewNumber2.arrangedSubviews {
for constraint in subview.constraints {
constraint.isActive = false
}
}

stackViewNumber2.updateConstraints()
// then run animation block to update view

有没有更有效的方法来隐藏嵌套的UIStackViews而不添加IBOutlet作为约束,确保它不弱,并记录是否isActivetrue/false?

我认为我的问题与嵌套的 stackViews 有关,但我不知道如何解决它。感谢您的阅读,我欢迎就如何隐藏包含嵌套 UIStackViewsUIStackView 提出建议。

最佳答案

与其隐藏,我认为最好删除 stackView 本身。

myStackView.removeArrangedSubview(playButton)
playButton.removeFromSuperview()

希望对您有所帮助。

关于ios - 使用嵌套的 UIStackviews 隐藏 UIStackView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42847837/

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