更改UILabel的大小或字体以适应重音字符

3

我有一个带有文本的UILabel,它被称为:

self.textLabel; 

现在,我注意到每当我添加像Ä Ö Ü这样的重音字母时,就会出现以下效果:

enter image description here

请注意,重音字母上方的点被切断了。我希望让文本适应标签,但是self.textLabel.numberOfLines = 2约束条件确保我有两行文本,并且句子后面的文本超出宽度仍然保持不变。本质上,我想要一个像这样的标签:

enter image description here

保留点号。现在,我已经尝试过:[self.frame sizeToFit],但它不起作用,因为它会将整个文本包装起来。就像我说的那样,将文本裁剪成两行后再显示。
使用.boundsCGRectMake创建新的框架,然后将它们的新高度赋值给当前框架,但这也行不通。请查看https://stackoverflow.com/questions/21948714/adjust-size-of-uilabel-to-fit-height-of-text获取更多信息。有谁能帮帮我吗?
2个回答

0

为标签添加顶部填充对我解决了这个问题。

@IBDesignable class PaddingLabel: UILabel {

@IBInspectable var topInset: CGFloat = 5.0
@IBInspectable var bottomInset: CGFloat = 0
@IBInspectable var leftInset: CGFloat = 0
@IBInspectable var rightInset: CGFloat = 0

override func drawText(in rect: CGRect) {
    let insets = UIEdgeInsets(top: topInset, left: leftInset, bottom: bottomInset, right: rightInset)
    super.drawText(in: rect.inset(by: insets))
}

override var intrinsicContentSize: CGSize {
    let size = super.intrinsicContentSize
    return CGSize(width: size.width + leftInset + rightInset,
                  height: size.height + topInset + bottomInset)
}   

override var bounds: CGRect {
    didSet {
        // ensures this works within stack views if multi-line
        preferredMaxLayoutWidth = bounds.width - (leftInset + rightInset)
    }
} 
}

-1

答案是这样做的

self.textLabel.numberOfLines = 2;

然后执行:

[self.textLabel sizeToFit];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接