Ios 根据文本的总宽度调整UILabel的大小
如何根据UILabel的字体大小和标签文本中的字符数来预测它所需的宽度 我已经看到了一些这样做的例子,但是它们都在objective-c中,而不是swift 3.0中 我找到了这个方法,但它在objective-c中,我在实现它时遇到了困难Ios 根据文本的总宽度调整UILabel的大小,ios,swift,xcode,uilabel,Ios,Swift,Xcode,Uilabel,如何根据UILabel的字体大小和标签文本中的字符数来预测它所需的宽度 我已经看到了一些这样做的例子,但是它们都在objective-c中,而不是swift 3.0中 我找到了这个方法,但它在objective-c中,我在实现它时遇到了困难 CGFloat width = [label.text sizeWithFont:[UIFont systemFontOfSize:17.0f]].width; 有什么建议吗?您可以将要设置标签文本值的字符串转换为typeNSString guard l
CGFloat width = [label.text sizeWithFont:[UIFont systemFontOfSize:17.0f]].width;
有什么建议吗?您可以将要设置标签文本值的字符串转换为type
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
如果要根据TextSize和TextLength设置UILabel的大小,请使用 intrinsicContentSize 下面是这方面的示例代码:
lblDemo.frame.size = lblDemo.intrinsicContentSize
这里lblDemo是UILabel的IBOutlet。您希望根据输入的文本获取标签的宽度。我想你会在这里找到合适的解决办法 希望有帮助
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
}
希望,它会有所帮助我想这里已经回答了这个问题。希望,它能帮助我工作,但我需要它:lblDemo.widthAnchor.constraint(equalToConstant:30+lblDemo.intrinsicContentSize.width)。isActive=true我又使用了30个标签自己的宽度。