调用 sizeToFit 后调整 UILabel 大小和文本位置

Adjusting UILabel size and text position after calling sizeToFit

当前结果:

我可以通过调用 sizeToFit 来调整标签的大小,这在构建文本方面做得很好 -- 然而,即使使用 NSTextAlignmentCenter,文本也不完全一样水平或垂直居中。要调整标签内的文本定位,我已覆盖 drawTextInRect: 以使用 UIEdgeInserts 调整文本矩形。

预期结果:

既然文本已居中,我想扩展标签以在文本和标签边缘之间添加一些 space。任何帮助将不胜感激,谢谢!

我会通过创建 UILabel 的子类并覆盖 intrinsicContentSize 而不是 drawTextInRect: 来实现。

override func intrinsicContentSize() -> CGSize {
        self.sizeToFit()
        frame = frame.rectByInsetting(dx: -12, dy: -6)
        var size = frame.size
        return size
    }

当然,文字对齐也需要设置为居中