CGSize sizeWithAttributes in Swift

what I did is something like this:

swift 5.x

let myString = "Some text is just here..."
let size: CGSize = myString.size(withAttributes: [.font: UIFont.systemFont(ofSize: 14)])

swift 4.x

let myString = "Some text is just here..."
let size: CGSize = myString.size(withAttributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 14)])

swift 3

var originalString: String = "Some text is just here..."
let myString: NSString = originalString as NSString
let size: CGSize = myString.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 14.0)])

swift 2.x

var originalString: String = "Some text is just here..."
let myString: NSString = originalString as NSString
let size: CGSize = myString.sizeWithAttributes([NSFontAttributeName: UIFont.systemFontOfSize(14.0)])

Just use explicit casting:

var stringsize = (strLocalTelefone as NSString).sizeWithAtt...

Otherwise you can bridge it too:
Bridging is no longer supported in later versions of Swift.

var strLocalTelefone = "some string"
var stringsize = strLocalTelefone.bridgeToObjectiveC().sizeWithAttributes([NSFontAttributeName:UIFont.systemFontOfSize(14.0)])

This answer is worth at least looking at, as it highlights potential differences between the two approaches.


Just one line solution:

yourLabel.intrinsicContentSize.width for Objective-C / Swift

This will work even your label text have custom text spacing.