func heightForLabel(#fontSize: CGFloat, labelWidth: CGFloat) -> CGFloat {
let label:UILabel = UILabel(frame: CGRectMake(0, 0, labelWidth, CGFloat.max))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.ByWordWrapping
label.font = UIFont(name: "HelveticaNeue", size: fontSize)
label.text = self
label.sizeToFit()
return label.frame.height
}
To make a custom UILabel with correct height automatically:
class YourLabel: UILabel {
required init(coder decoder: NSCoder) {
super.init(coder: decoder)
}
init(text: String, fontSize: CGFloat, frame: CGRect){
super.init(frame: CGRectMake(frame.origin.x, frame.origin.y, frame.width, text.heightForLabel(fontSize: fontSize, labelWidth: frame.width)))
self.numberOfLines = 0
self.lineBreakMode = NSLineBreakMode.ByWordWrapping
self.font = UIFont(name: "HelveticaNeue", size: fontSize)
self.text = text
self.sizeToFit()
}
}
Then you will be able to use it like:
YourLabel(text: "Label Name", fontSize: 12.0, frame: CGRectMake(0, 0, 100, 0))
// The height value in the frame won't be used and can be any value