Autolayout - 使超级视图高度等于子视图高度+常量,其中子视图是 textView
Posted
技术标签:
【中文标题】Autolayout - 使超级视图高度等于子视图高度+常量,其中子视图是 textView【英文标题】:Autolayout - Make superview height equal to subview height + constant where subview is textView 【发布时间】:2016-05-03 06:28:16 【问题描述】:我有一个UIView
,在UIView
里面我有一个UITextView
。 UITextView
不滚动,而是使用以下代码行将 programmatically
设置为全高:
self.textView.sizeToFit()
通过界面生成器,我为UITextView
设置了以下constraints
,包括superView.bottom = textView.bottom + 25
:
但这是我运行应用程序时得到的结果:
如果有人知道我该如何解决这个问题以适应整个“扩展”textView
,如果您能告诉我,我们将不胜感激。
提前致谢。
【问题讨论】:
它是文本视图而不是标签是否有原因? 我是这么认为的,但现在我想起来了,我认为只要标签具有多行和动态高度,它就可以工作。事实是我不知道会有多少文字,所以你认为标签也可以工作吗? @Wain 你能发布整个视图控制器及其约束吗?它还取决于其他约束。 文本域超级视图的高度是固定的还是可变的?因为您为文本字段设置了高度约束和顶部、底部空间约束, 【参考方案1】:使用标签而不是文本视图。重要的区别是标签具有固有的内容大小,而文本视图没有(因为它旨在滚动其内容)。这允许标签与约束系统一起显示所有文本(无需计算大小)。
如果您继续使用文本视图,则应添加高度约束并计算所需高度并适当配置约束。
【讨论】:
谢谢,听起来不错!我切换到 UILabel 但现在 this 是我得到的:。我将底部约束设置为 superView 和高度 >= 比一个常数。有任何想法吗?再次感谢! 基本上永远不要使用 >=,而且你不需要高度限制,如果你想在边缘限制上添加填充 好的,那我试试去掉!我放只是因为我想要超级视图的最小高度。 不幸的是,删除它并没有太大变化。我试过了,它仍然有最小高度,但它保持固定。 These 是 UILabel 上的约束。难道是我在 ViewDidLoad() 中更改了 UILabel 的内容吗?它用一个值初始化,然后用另一个值更新。意思是我必须以某种方式更新约束吗? 我想通了,是“alignbottomto : View”谢谢!以上是关于Autolayout - 使超级视图高度等于子视图高度+常量,其中子视图是 textView的主要内容,如果未能解决你的问题,请参考以下文章
添加子视图并使用 AutoLayout 将前沿与超级视图对齐并包裹视图
使用 AutoLayout 动态布局滚动视图 contentSize