iOS Supprimez les rembourrages supplémentaires pour les adapter à un texte mesuré avec précision.


Exemple

UITextView a des UITextView supplémentaires par défaut. Parfois, c'est embêtant, surtout si vous voulez mesurer du texte sans instance de vue et le placer précisément dans une zone.

Faites ceci pour enlever de tels rembourrages.

messageTextView.textContainerInset = UIEdgeInsetsZero
messageTextView.textContainer.lineFragmentPadding = 0

Vous pouvez désormais mesurer la taille du texte à l'aide de NSAttributedString.boundingRectWithSize(...) et redimensionner un objet UITextView uniquement pour l'adapter au texte.

let budget = getSomeCGSizeBudget()
let text = getSomeAttributedString()
let textSize = text.boundingRectWithSize(budget, options: [.UsesLineFragmentOrigin, .UsesFontLeading], context: nil).size
messageTextView.frame.size = textSize // Just fits.