gpt4 book ai didi

ios - 嵌套的 UIStackViews 打破约束

转载 作者:IT王子 更新时间:2023-10-29 07:53:28 26 4
gpt4 key购买 nike

我有一个复杂的 View 层次结构,内置在 Interface Builder 中,带有嵌套的 UIStackViews。每次我隐藏一些内部堆栈 View 时,我都会收到“无法满足的约束”通知。我已经追踪到这一点:

(
"<NSLayoutConstraint:0x1396632d0 'UISV-canvas-connection' UIStackView:0x1392c5020.top == UILabel:0x13960cd30'Also available on iBooks'.top>",
"<NSLayoutConstraint:0x139663470 'UISV-canvas-connection' V:[UIButton:0x139554f80]-(0)-| (Names: '|':UIStackView:0x1392c5020 )>",
"<NSLayoutConstraint:0x139552350 'UISV-hiding' V:[UIStackView:0x1392c5020(0)]>",
"<NSLayoutConstraint:0x139663890 'UISV-spacing' V:[UILabel:0x13960cd30'Also available on iBooks']-(8)-[UIButton:0x139554f80]>"
)

具体来说,UISV-spacing 约束:当隐藏 UIStackView 时,它的高约束得到一个 0 常量,但这似乎与内部 stackview 的间距约束冲突:它需要我的 Label 和按钮,与隐藏约束不协调,因此约束崩溃。

有解决办法吗?我已尝试递归隐藏隐藏堆栈 View 的所有内部 StackView,但这会导致内容浮出屏幕的奇怪动画,并导致启动时 FPS 严重下降,但仍未解决问题。

最佳答案

这是隐藏嵌套堆栈 View 的已知问题。

这个问题基本上有 3 种解决方案:

  1. 将间距更改为 0,但您需要记住之前的间距值。
  2. 调用 innerStackView.removeFromSuperview(),但随后您需要记住在何处插入堆栈 View 。
  3. 用至少一个 999 约束将堆栈 View 包装在 UIView 中。例如。 top@1000, leading@1000, trailing@1000, bottom@999.

我认为第三个选项是最好的。有关此问题、发生原因、不同解决方案以及如何实现解决方案 3 的更多信息,请参阅 my answer to a similar question .

关于ios - 嵌套的 UIStackViews 打破约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33073127/

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