【发布时间】:2016-05-09 10:34:05
【问题描述】:
我有两个UILabels:名称和描述。约束设置如下:
- name 具有左侧和顶部约束
- 描述有一个右和上的约束
- 它们之间至少有 10 像素的间距限制,以免它们重叠
当我运行程序时,有时 name 会被截断,有时 description 会被截断。
问题是:有没有办法保证在空间不足时总是截断正确的标签?
【问题讨论】:
标签: ios storyboard uilabel
我有两个UILabels:名称和描述。约束设置如下:
当我运行程序时,有时 name 会被截断,有时 description 会被截断。
【问题讨论】:
标签: ios storyboard uilabel
您可以尝试为左侧标签 (lbl1) 设置最小宽度约束,然后将该约束连接到您的 ViewController 中的 IBOutlet。
然后在加载或 willAppear 或任何其他相关操作时,确定 lbl1 的最小宽度并将其设置为约束常量。
然后在视图出现之前,它应该将右侧的标签更新为正确的宽度,而不会截断左侧的标签。
有关确定标签大小的参考,请参阅此答案: https://stackoverflow.com/a/19128912/933887
【讨论】:
解决此问题的正确方法是更改其中一个标签的Content Hugging Priority。默认情况下,此值设置为 251。只需将标签的 Content Hugging Priority 之一更改为 250 或 252,具体取决于您希望如何“拥抱”它。
在code:
func setContentHuggingPriority(_ priority: UILayoutPriority,
for axis: NSLayoutConstraint.Axis)
或界面构建器:
如果您需要有关此主题的更多信息,请查看此帖子:https://medium.com/@abhimuralidharan/ios-content-hugging-and-content-compression-resistance-priorities-476fb5828ef
【讨论】:
如果您可以使用较小的字体,您可以使用UILabel().adjustsFontSizeToFitWidth = true。
【讨论】: