【问题标题】:Auto resize UIView based on multi line UILabel基于多行 UILabel 自动调整 UIView 的大小
【发布时间】:2017-01-05 11:20:07
【问题描述】:

问题: 我有一个带有多行 UILabel 的自定义视图(见下图)。

然后这个自定义视图被添加到我的故事板中的一个屏幕上(见下图)。

这很好用。问题是多行标签在执行时会动态变化几次,然后蓝色的 UIView 框就放不下了。更小/更大的屏幕尺寸也是一个问题。

问题: 那么如何让 UIView 根据 UILabel 的高度自动调整高度呢?是否可以通过 Interface Builder 和 Autolayout 完成? (不是必要的,但我的其他大部分设置都是通过 IB 完成的)

如果需要更多详细信息,请告诉我。

【问题讨论】:

  • 为什么不使用 UIStackView ?你也需要支持 iOS 8 吗?
  • @dirtydanee 嗨,不需要支持 iOS 8。我将如何使用 UIStackView 解决这个问题?
  • 我正在看,很快就会通知你。
  • 简单地把它放在表格视图单元格中,然后把tableview.height = UITableViewAutomaticDimension

标签: ios swift xcode interface-builder


【解决方案1】:

只要确保自定义视图中的标签固定到所有(标题标签固定到:Leading, Top , 超级视图的尾随和底部到内容标签;内容标签固定到:superview 的前导、底部、尾随和顶部到标题标签)您将有您的 superview 更改根据内容的高度。

另外,请注意,您的 superview 不需要高度 constraint,只需将其固定到前导、底部和尾随边就足够了。

在我的一个应用中,我的视图几乎相同。为了确保高度根据更新发生变化,我会做的是:

customView.setNeedsLayout()
customView.layoutIfNeeded()

您也可以将此代码包装在 UIView.animate(withDuration: ...) 块中

干杯!

【讨论】:

  • 注意,自定义视图必须有一个宽度约束才能工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 2019-09-18
相关资源
最近更新 更多