En Objective-C, j'ai pu utiliser:
CGSize stringsize =
[strLocalTelefone sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f]}];
Mais dans Swift Langue, je n’ai trouvé aucune solution à cette situation.
De l'aide?
Une solution en une seule ligne:
yourLabel.intrinsicContentSize.width
pour Objective-C/Swift
Cela fonctionnera même si votre texte d'étiquette a un espacement de texte personnalisé.
ce que j'ai fait est quelque chose comme ça:
let myString = "Some text is just here..."
let size: CGSize = myString.size(withAttributes: [.font: UIFont.systemFont(ofSize: 14)])
let myString = "Some text is just here..."
let size: CGSize = myString.size(withAttributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 14)])
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)])
var originalString: String = "Some text is just here..."
let myString: NSString = originalString as NSString
let size: CGSize = myString.sizeWithAttributes([NSFontAttributeName: UIFont.systemFontOfSize(14.0)])
Il suffit d'utiliser un casting explicite:
var stringsize = (strLocalTelefone as NSString).sizeWithAtt...
Sinon, vous pouvez aussi le combler:
Le pontage n'est plus pris en charge dans les versions ultérieures de Swift.
var strLocalTelefone = "some string"
var stringsize = strLocalTelefone.bridgeToObjectiveC().sizeWithAttributes([NSFontAttributeName:UIFont.systemFontOfSize(14.0)])
Cette réponse mérite au moins l’être, car elle met en évidence les différences potentielles entre les deux approches.
Vous pouvez également utiliser ce morceau de code, c'est plus facile et vous n'avez pas à créer de nouvelle variable uniquement pour obtenir l'objet NSString:
var stringToCalculateSize:String = "My text"
var stringSize:CGSize = (stringToCalculateSize as NSString).sizeWithAttributes([NSFontAttributeName: UIFont.systemFontOfSize(14.0)])
Sur xCode 6.3, voici ce que vous devez faire maintenant:
let font:AnyObject = UIFont(name: "Helvetica Neue", size: 14.0) as! AnyObject
let name:NSObject = NSFontAttributeName as NSObject
let dict = [name:font]
let textSize: CGSize = text.sizeWithAttributes(dict)