mag*_*zbc 17 uilabel ios swift
我有一个问题,UILabel子类切断底部的文本.标签的高度适合文本,底部留有一些空间,但文本仍然被剪掉.
红色条纹是添加到标签图层的边框.
我将标签子类化以添加边缘插入.
override func sizeThatFits(size: CGSize) -> CGSize {
var size = super.sizeThatFits(size)
size.width += insets.left + insets.right
size.height += insets.top + insets.bottom
return size
}
override func drawTextInRect(rect: CGRect) {
super.drawTextInRect(UIEdgeInsetsInsetRect(rect, insets))
}
Run Code Online (Sandbox Code Playgroud)
但是,在这种特殊情况下,插入是零.
mag*_*zbc 12
事实证明问题在于
self.lineBreakMode = .ByClipping
Run Code Online (Sandbox Code Playgroud)
改变它
self.lineBreakMode = .ByCharWrapping
Run Code Online (Sandbox Code Playgroud)
解决了这个问题
Helvetica Neue Condensed Bold字体遇到相同的问题。将标签的“ 基线”属性从“ 对齐基线”更改为“ 对齐中心 ”对我来说很成功。您可以通过选择标签在情节提要中轻松更改此设置。
可能您正在寻找的属性是UILabel的baselineAdjustment。
由于旧的 UILabel 的已知错误,因此需要它。尝试一下:
label.baselineAdjustment = .none
Run Code Online (Sandbox Code Playgroud)
它也可以通过界面生成器进行更改。这个属性可以在UILabel 的属性检查器下找到,名称为"Baseline"。

有一些类似这样的讨论是关于 UILabel 文本边界框上的一个错误。在我们的案例中,我们在这里观察到的是这个错误的某个版本。当我们通过 AutoShrink.minimumFontScale或缩小文本时,看起来边界框的高度会增加.minimumFontSize。
结果,边界框变得大于行高和 UILabel 高度的可见部分。也就是说,将 baselineAdjustment属性设置为默认状态.alignBaselines,文本与裁剪后的底部对齐,我们可以观察到线条剪裁。
理解这种行为对于解释为什么 set.alignCenters解决一些问题而不是其他问题至关重要。只是在更大的边界框上居中文本仍然可以剪辑它。
所以最好的方法是设置
label.baselineAdjustment = .none
Run Code Online (Sandbox Code Playgroud)
.none该案的文件说:
相对于边界框的左上角调整文本。这是默认调整。
由于绑定框原点与标签的框架相匹配,因此它应该可以解决AutoShrink启用单行标签的任何问题。
它也可以通过界面生成器进行更改。这个属性可以在UILabel 的属性检查器下找到,名称为"Baseline"。
您可以在此处阅读有关官方文档中UILabel 的 更多信息。 baselineAdjustment
| 归档时间: |
|
| 查看次数: |
11879 次 |
| 最近记录: |