【发布时间】:2017-04-20 13:36:40
【问题描述】:
我在写问题之前搜索了 4 个小时,我在网上看到的答案都没有解决这个问题。
我正在开发一个 iOS 应用程序,在情节提要中,当我使用 UILabel 时,无论我做什么,顶部总是有额外的填充,这给我带来了一个大问题,因为我正在尝试拥有像素完美的设计。
我仍然不明白这是从哪里来的,我尝试使用纯文本,我尝试了属性字符串,两者仍然给出了这个额外的填充:
我尝试使用以下内容对标签进行子类化:
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,我仍然会得到这个烦人的顶部填充。
知道如何解决这个问题吗?
谢谢!
【问题讨论】:
-
你试过 sizeToFit 吗?
-
你不喜欢什么?我没有看到任何“顶部填充”。
-
@danh 是的,它没有用
-
@matt 在黄色背景中的实际文本上方有 4 个点 :) 黄色背景是我添加的 UILabel 背景,让你们看看我在说什么。
-
标签提供了一些前导空间。这个是正常的。别担心,开心就好。