如何获得根据标签内容动态变化的 UIView 的高度 - Swift

Posted

技术标签:

【中文标题】如何获得根据标签内容动态变化的 UIView 的高度 - Swift【英文标题】:How do I get the height of a UIView that dynamically changes based on label content - Swift 【发布时间】:2020-07-26 18:52:44 【问题描述】:

我有一个 UIView,它根据里面标签的内容改变高度。我需要使用视图的高度来设置preferredContentSize(),但是当我使用myView.frame.size.heightmyView.bounds.height 时,它会获得原始高度,而不是带有更新标签的新高度。在viewDidLoad() 的拳头上,我在设置标签之前得到了高度,所以我认为这是问题所在,但即使在我移动它之后,它仍然没有得到更新的高度。关于标签更新后如何获取高度的任何想法?

【问题讨论】:

【参考方案1】:

UILabels 将具有intrinsicContentSize,因此如果您使用自动布局在视图中布局您的UILabel,您应该能够使用myView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize) 来获得视图的最佳大小。

https://developer.apple.com/documentation/uikit/uiview/1622624-systemlayoutsizefitting

另请参阅:https://***.com/a/55482896/6416739 以了解使用 systemLayoutSizeFitting 和 UILabel 的示例

【讨论】:

以上是关于如何获得根据标签内容动态变化的 UIView 的高度 - Swift的主要内容,如果未能解决你的问题,请参考以下文章

在 UIView 中动态放置标签和按钮

iOS:根据 View 位置动态改变 UILabel Alignment

根据UILabel动态设置UIView的高度

如何动态设置 UIView 约束?

根据内容自动设置自定义 UIView 的高度?

如何在 iOS 中将 UIView 添加到 UIScrollView 中(具有动态内容的视图)