我想像SoundCloud应用程序那样创建一个智能标题。 请参阅下面的附件,
这两个标题: - •PAN• - 德国柏林
是我想创造的。
这些字幕似乎由sizeToFit或sizeThatFits执行。但是,如果使用带有背景颜色的sizeThatFits(通过NSBackgroundColorAttributeName),则不会在第一个字母之前和最后一个字母以及顶部和底部填充之前得到填充。 标题将按照这些字母的大小进行组织。
无论如何,我想做的是与附件图片完全相同的标题。
干杯,
答案 0 :(得分:0)
这里有两种方法。一种是在调用sizeThatFits
后添加一些填充。另一种方法是在标签标题前加上一个空格。
但是,添加填充的正确方法是扩展UILabel
并在子类上覆盖方法textRectForBounds:limitedToNumberOfLines:
。在那里,只需在super
上通过您收到的bounds
调用相同的方法,只需更小。
答案 1 :(得分:0)
我知道这是一个老问题,但我正在寻找与SoundCloud标签相同的效果。 这是uilabel的子类
import UIKit
class LabelPine: UILabel {
override func drawTextInRect(rect: CGRect) {
let insets = UIEdgeInsets.init(top: 5, left: 0, bottom: 5, right: 3)
super.drawTextInRect(UIEdgeInsetsInsetRect(rect, insets))
}
override func textRectForBounds(bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
super.textRectForBounds(bounds, limitedToNumberOfLines: 0)
return CGRectInset(self.attributedText!.boundingRectWithSize(CGSizeMake(999, 999), options: .UsesLineFragmentOrigin, context: nil), -5, -5)
}
}
以下是相应课程的实施:
labelNombre = LabelPine()
labelNombre?.text = nombreUser
labelNombre?.frame = CGRectMake(10, nombrePos.Yo, nombrePos.ancho, nombrePos.alto)
labelNombre?.font = UIFont(name:"Hiragino Sans W3",size: 19)!
labelNombre?.textAlignment = .Left
labelNombre?.backgroundColor = UIColor(white: 1, alpha: 0.5)
labelNombre?.textColor = colorBlentUIColor
labelNombre?.sizeToFit()
header?.addSubview(labelNombre!)
请注意我调用sizeToFit()。