iOS UILabel大小问题

时间:2016-12-06 01:44:31

标签: ios iphone swift

我在写我的问题之前搜索了4个小时,我在网上看到的答案都没有解决这个问题。

我正在使用iOS应用程序,在故事板中,当我使用UILabel时,无论我做什么,总会有额外的填充,这导致我这是一个很大的问题,因为我试图设计一个像素完美的设计。

我仍然不明白这是从哪里来的,我尝试使用纯文本,我尝试了归因字符串,两者仍然提供了额外的填充:

截图: http://imgur.com/Fldcodl

我尝试使用以下内容对标签进行子类化:

var textInsets = UIEdgeInsets.zero {
    didSet { invalidateIntrinsicContentSize() }
}


override var bounds:CGRect {
    get {
        return super.bounds
    }
    set {
        super.bounds = newValue
        if (self.preferredMaxLayoutWidth != super.bounds.size.width) {
            self.preferredMaxLayoutWidth = super.bounds.size.width;
            self.setNeedsUpdateConstraints()
        }

    }
}

override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
    let insetRect = UIEdgeInsetsInsetRect(bounds, textInsets)
    let textRect = super.textRect(forBounds: insetRect, limitedToNumberOfLines: numberOfLines)
    let invertedInsets = UIEdgeInsets(top: -textInsets.top,
                                      left: -textInsets.left,
                                      bottom: -textInsets.bottom,
                                      right: -textInsets.right)
    return UIEdgeInsetsInsetRect(textRect, invertedInsets)
}

override func drawText(in rect: CGRect) {
    super.drawText(in: UIEdgeInsetsInsetRect(rect, textInsets))
}

即使将左上角的左下角的值设置为0,我仍然会遇到令人讨厌的顶部填充。

知道如何解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:-1)

假设您要删除标签周围的空白区域(问题不完全清楚)。

您的标签背景为黄色,您尝试删除的边距位于标签之外,因此没有任何子类化将删除它。

将标签添加到屏幕(在代码或界面生成器中,通过约束或框架)的方式是定义这些边距的内容,也就是您需要调整以修复边距的内容。