使用 AutoLayout 根据子视图中的动态文本增长视图

Posted

技术标签:

【中文标题】使用 AutoLayout 根据子视图中的动态文本增长视图【英文标题】:Using AutoLayout to grow a view based on dynamic text in subview 【发布时间】:2018-03-19 17:31:59 【问题描述】:

我正在开发一个支持动态类型的应用。我有一个简单的 UIView 用作表格中的页脚。在该视图中只是一个 UIButton。当用户增加动态类型大小时,按钮标签中的文本会增长,我需要按钮本身和包含视图都适当增长。我怎样才能做到这一点?

谢谢,

【问题讨论】:

UIButton 是自定义按钮类,还是您使用的是标准类?如果它是在titleLabel 上设置首选字体的标准按钮,则应自动增加/减少用户选择设置的字体大小。为了使页脚增长,您可以在页脚视图中围绕按钮设置顶部和底部约束。然后要么返回其当前大小,要么我认为 Apple 添加了动态页脚。 【参考方案1】:

UIButton 类具有固有大小,这意味着如果您不将其限制为特定大小,它会将自身调整为适合其内容的大小。这也意味着您可以将按钮绑定到父级UIView 的边缘,并让按钮控制父级的大小。只要您没有明确限制UIButtonUIView 的大小,这将自动发生。

如果您愿意,您可以选择在一个轴上设置约束并让按钮控制另一个轴的大小,例如让按钮控制页脚的高度,但始终为页脚使用固定宽度.在这种情况下,您可以为页脚的宽度或左/右添加约束。

Read more on controls that supports intrinsic sizes

如果您需要按钮标签周围的空间,您可以通过增加内容插入来添加它。

【讨论】:

以上是关于使用 AutoLayout 根据子视图中的动态文本增长视图的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AutoLayout 根据父高度调整子视图高度而不添加/删除约束

如何使用 Cocoa Autolayout 根据优先级调整两个子视图的大小?

iOS Autolayout 视图高度基于较大的子视图高度

如何使用 AutoLayout 使子视图确定父/兄弟视图大小?

滚动视图中的 UITextView 与 Autolayout iOS 不工作

AutoLayout动态调整UILabel高度和宽度