我已经制定了一个UI设计规范,其中精确指定了文本之间的间距,即此处是表格视图单元格中垂直间距的规范:
使用故事板和约束时的问题是,当您在故事板中放置UILabel时,其高度大于其包含的字体大小(因此您可以例如在两行之间设置6的垂直约束例如,在规范中,因为这会将UILabels设置为6分,而不是包含的文本6分开。)
这是一个清楚表达我的意思的图表:
这里的约束是6px。但我希望能够将Label1文本底部与标签2文本顶部之间的距离设置为6。 通过在标签之间设置6的垂直约束,这些标签内的文本之间的距离大于6.
我尝试使用自定义标签解决此问题:
@IBDesignable
class NoPaddingLabel: UILabel {
override var alignmentRectInsets: UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}
}
但是,尽管有@IBDesignable,但这并没有调整故事板中UILabel的高度 - 例如,如果拖放UILabel,则默认情况下系统字体大小为17,高度为21。类型从UILabel更改为NoPaddingLabel,其高度仍为21。 如果然后添加约束,那么关于垂直压缩和垂直拥抱优先级的错误音调就会发生冲突。
那么,有没有办法计算故事板中UILabel的高度以对应其字体的高度,以便更容易在文本之间设置精确的垂直约束? -
解决方案是设置文本之间的精确约束距离,而不是故事板中标签之间的距离?