我在写问题之前搜索了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,我仍然会得到这个烦人的顶部填充。
任何想法如何解决?
谢谢!
假设您想删除标签周围的空白(从您的问题中不完全清楚)。
您的标签具有黄色背景,您要删除的边距在标签外,因此任何子类别都不会删除它。
将标签添加到屏幕的方式(在代码或接口构建器中,通过约束或帧)是定义这些保证金的方法,这就是您需要进行调整以固定空间的方法。