UILabel 大小的自动布局问题(附项目)

Posted

技术标签:

【中文标题】UILabel 大小的自动布局问题(附项目)【英文标题】:Auto Layout questions for UILabel sizing (project attached) 【发布时间】:2014-11-12 04:25:34 【问题描述】:

对于我尝试使用自动布局进行设置的一些事情,我感到有些困惑。

这是我目前拥有的。如您所见,我正在尝试实现类似于 Messages.app 的东西。我使测试/演示项目非常相似,以便更容易解释。

这是项目:https://github.com/runmad/MessagingApp

我正在努力实现一些目标:

• 使用自动布局来调整单元格大小: 我已经设置好了,因为它几乎是免费的。

• 在标签的框架和文本之间添加插图:我认为使用 layoutMargins (http://carpeaqua.com/2014/07/24/auto-layout-in-ios-8-layout-margins/) 是可能的,但我无法做到这一点。

• 将标签调整为文本大小或contentView 的最大宽度的 60%:我已经能够为上面的灰色消息执行此操作(除了可能不是第一个灰色消息?),但我无法将蓝色(“已发送”)消息的大小调整为最大为单元格 contentView 宽度的 60%。

我的目标是 iOS 8.0,所以对于layoutMargins,这应该没问题。我还在 IB 中使用 Storyboard 和 Auto Layout。

非常感谢任何帮助和见解!

【问题讨论】:

不清楚您要做什么。您是否希望文本仅到达标签右边缘的 60%?你希望它从左边缘开始,还是从两边插入? 我希望标签是文本的大小,或者如果文本太长,则最多为宽度的 60%,从任一侧开始,具体取决于它是发送还是接收消息。 【参考方案1】:

您的约束(对于蓝色标签)的问题是您不能使用带有前导(或左侧或顶部)约束的乘数。 leading 或 top 的值为 0,因此将其乘以某个值不会让你得到任何结果。您需要在单元格的后缘(就像对灰色标签所做的那样)和标签的前缘之间进行约束。由于您是从另一侧测量,因此您希望乘数为 0.4 而不是 0.6。

【讨论】:

以上是关于UILabel 大小的自动布局问题(附项目)的主要内容,如果未能解决你的问题,请参考以下文章

自动布局 - UILabel 在方向更改后宽度缩小,这是由另一个应该自动调整字体大小的 UILabel 引起的

根据自动布局更改 UILabel 中的字体大小(swift)

为自动布局设置数字 UILabel 以正确计算内在内容大小

两个具有不同字体大小的自动布局 UILabel:文本顶部对齐

自动布局:UILabel 无法正确调整长文本的大小

自动布局以动态调整 UILabel 大小不起作用