【问题标题】:UIStackView horizontal compression/hugging issue. Need final item to stretch to fill the remaining width, but NOT compress the other items if largeUIStackView 水平压缩/拥抱问题。需要最后一个项目来拉伸以填充剩余的宽度,但如果大则不要压缩其他项目
【发布时间】:2021-02-06 23:34:23
【问题描述】:

我在 UICollectionViewCell 中有一个水平堆栈视图。堆栈视图中有四个项目,前三个是专门的 UILabel(被视为“松散”、“$?”,得分为 75),我从不想被压缩。最后一项是一个专门的 UITextView,它可以列出任意数量的用户定义标签,因此可以是一个很长的列表。

第一次使用单元格时,它会正确布置所有内容。

但是当单元格被重新使用时,前两项中的一些将被压缩。这些是默认设置的结果,但我尝试了拥抱/压缩优先级的各种组合,但似乎从来没有正确的结果。我只是在错误地处理这个问题吗?

编辑:一些设置信息:

【问题讨论】:

  • “我只是在错误地处理这个问题”告诉我们你是如何处理它的。你能显示填充堆栈视图的代码吗?
  • 对不起,我以为是暗示的,都是通过情节提要。它们只是 UILabel 和最后的 UITextView,具有默认的拥抱/压缩优先级。在运行时或类似的情况下,没有动态添加/删除视图到堆栈视图。堆栈视图是水平的,从“Loose”的开头到“F”的结尾占据整个单元格的宽度,即,它被固定在左侧和右侧,并留有很小的边距。
  • 添加了更多设置信息。如果您想要更多,请告诉我!
  • 尝试给排列好的子视图之一降低抗压优先级?
  • 我试过了,结果一样。第一次布局时,很好,但随后的“reloadData”或重用单元格布局不正确。我有点不知所措!

标签: ios xcode autolayout uistoryboard uistackview


【解决方案1】:

如果我正确理解您的布局...

  • "Loose" "$?" 和 "75" 都是自定义的UILabel
  • "Shell" "A" "C" 等...是自定义UITextView 中的自定义字符/元素

但是,当您有太多“标签”以适应自定义文本视图的水平空间时,会发生什么情况并不清楚。

无论如何,如果您希望前三个元素(自定义标签)始终按原样显示 - 不拉伸,不压缩...

保持堆栈视图设置不变:

Axis: Horizontal
Alignment: Fill
Distribution: Fill
Spacing: 5

并使用这些内容优先级设置(半透明的浅蓝色矩形是自定义文本视图的框架):

【讨论】:

  • 我最终放弃了,只是将这些自定义标签重新实现为更多“标签”,但谢谢!我很确定我尝试正确设置这些,(或相反,将标签设置为低于默认值)并且无法使其正常工作,但感谢您的帮助!
猜你喜欢
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 2011-11-28
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多