UITableViewCell 中的自动布局 UILabel
Posted
技术标签:
【中文标题】UITableViewCell 中的自动布局 UILabel【英文标题】:Autolayout UILabel in UITableViewCell 【发布时间】:2015-01-22 11:08:39 【问题描述】:我正在使用 autoLayout 并且是新手,
我有一个如下的 UITableView Cell,UITableViewCell 的高度是动态的,所以它的高度会根据文本而变化。
我有两个标签 A 和 B,可以有可变长度的文本,但宽度是固定的,而我的 UITableViewCell 有动态高度,那么我怎样才能让它们保持在中心右侧并保持相等与单元格顶部和底部的距离,如上两张图片所示。
【问题讨论】:
看看这个答案 - ***.com/questions/26133144/… 这对 kampai 没有帮助 【参考方案1】:要将两个标签放在中心,您必须将它们放在一个视图中,然后将该视图设置在中心。所以让我们开始并创建一个视图,比如 labelContainer。如下所示
除固定高度外,如图所示设置约束,因此最终约束将作为超级视图的固定尾随空间,固定宽度和垂直中心对齐超级视图。
现在在 labelContainer 视图中根据需要创建两个标签,如下图所示。 现在,您的标签将具有以下约束:labelA-固定宽度、固定顶部和尾部空间到容器视图以及固定底部空间到标签 B。对于 labelB-固定宽度、固定底部和尾部空间到容器视图以及固定顶部空间到标签 A
现在你的所有约束看起来像。
希望这会奏效。 但不要忘记将标签设置为 sizeToFitContent 并将行数设置为 0
【讨论】:
我会试试这个并回复你。 你好@iHulk,它不工作,所以我把我的演示项目发给你,你能不能把它改一下然后发回去,这对我来说很容易理解。 dropbox.com/s/xg8mli7r9ht1496/Huckleberry.zip?dl=0 发生的情况是,当单元格大小增加时,containerView 高度会增加,但只有当标签 A 和 B 的高度增加以适合它们时,containerView 高度才会增加。 你好@iHulk,你已经设置了先查看再设置标签的约束,对吧? 你好@iHulk,它按预期工作,但我有疑问,我想要一个更多的视图,这将是 YellowView 的父级,它的长度将取决于单元格的高度。和之前一样,我们有 YellowView,它过去常常随着单元格高度的增加而增加高度。【参考方案2】:在您的情况下,最好创建另一个视图,在该视图上添加两个标签作为子视图。约束有点难以设置,而且很容易出错,所以请仔细阅读。
-
创建一个包含两个标签的视图。让我们称之为
content
。您将约束设置为 superview 位于最右边的位置并垂直居中。接下来设置content
视图的宽度,这在您的情况下似乎是固定的。
创建两个标签并将它们放在content
视图中。让我们称它们为top
(顶部标签)和bottom
(底部标签)。将它们的左右约束设置为它们的超级视图 (content
),并将它们之间的垂直偏移设置为 0(或您实际想要的任何值)。
现在有趣的部分:将top
顶部约束设置为content
顶部,然后双击约束并反转,使第一项为content
,第二项为top
。对 bottom
执行相同操作,除了 pin 到底部:将 bottom
的底部约束设置为 superview,然后反转约束上的对象,使 content
首先是 bottom
。
此过程也可用于水平对齐。关键是告诉超级视图被固定到他们的子视图,而不是子视图被固定到他们的超级视图。所以基本上这里发生的是超级视图大小将取决于标签大小。之后,您可以简单地将超级视图固定到中心并且它可以工作。请注意约束中对象的顺序。
【讨论】:
如何设置其superView(content)的上下左右约束 在导航器(左侧)上,在每个标签上单击并按住鼠标按钮,同时按住控制键 (ctrl),然后拖动到内容并释放。将显示一个约束菜单。前导和尾随空格是左右的。 好的,我试试,第三点刚反弹,我会回复你的 我认为最好把我的示例项目发给你,你可以在其中进行编辑,这样会很容易理解。怎么说呢,发给你吧 我要给你发一个保管箱链接吗?以上是关于UITableViewCell 中的自动布局 UILabel的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell 中的 UITextField 使用自动布局