我将如何去预测基于UILabel的字体大小和标签文本中字符数量的所需宽度。基于文本总宽度调整UILabels的尺寸
我已经看到了一些这样做的例子,但它们都在objective-c中,而不是3.0。
我发现这个方法,但它在objective-c中,我在实现它时遇到了麻烦。
CGFloat width = [label.text sizeWithFont:[UIFont systemFontOfSize:17.0f]].width;
有什么建议吗?
我将如何去预测基于UILabel的字体大小和标签文本中字符数量的所需宽度。基于文本总宽度调整UILabels的尺寸
我已经看到了一些这样做的例子,但它们都在objective-c中,而不是3.0。
我发现这个方法,但它在objective-c中,我在实现它时遇到了麻烦。
CGFloat width = [label.text sizeWithFont:[UIFont systemFontOfSize:17.0f]].width;
有什么建议吗?
如果想使基于TEXTSIZE和正文长度的UILabel的大小,然后用 intrinsicContentSize。
下面是该样本的代码:
lblDemo.frame.size = lblDemo.intrinsicContentSize
这里lblDemo是的UILabel的IBOutlet中。
您可以将要设置标签文本值的字符串强制转换为NSString
。
guard let labelText = label.text else { return }
let castString = labelText as NSString
let size: CGSize = castString.size(attributes: [NSFontAttributeName : UIFont.systemFontSize])
//you now can use size.width to apply to a desired view
override func viewDidLoad() {
super.viewDidLoad()
let screenSize = UIScreen.main.bounds
let screenWidth = screenSize.width
let text = "Size To Fit Tutorial"
let font : UIFont!
switch UIDevice.current.userInterfaceIdiom {
case .pad:
font = UIFont(name: "Helvetica", size: 35)
case .phone:
font = UIFont(name: "Helvetica", size: 50)
default:
font = UIFont(name: "Helvetica", size: 24)
}
let yourHeight = heightForLabel(text: text, font: font, width:
screenWidth)
let yourLabel : UILabel = UILabel(Frame : CGRect(x:0 ,y:0
,width:screenWidth ,height:yourHeight))
yourLabel.backgroundColor = UIColor.black
self.view.addSubviews(yourLabel)
}
//Self Sizing height ....
func heightForLabel(text:String, font:UIFont, width:CGFloat) -> CGFloat{
let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width:
width, height: CGFloat.greatestFiniteMagnitude))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byCharWrapping
label.font = font
label.text = text
label.sizeToFit()
return label.frame.height
}
希望,它有助于
我认为这是在这里找到答案。 http://stackoverflow.com/questions/3527494/how-to-calculate-uilabel-width-based-on-text-length希望它有助于 –