En passant par quelques améliorations de base à une application sur laquelle je travaille. Encore nouveau sur la scène de développement iOS Swift. J'ai pensé que les lignes de texte dans mon code seraient automatiquement centrées parce que je mettais l'étiquette au centre. Après un peu de recherche, j'ai découvert que c'était pas le cas. Comment aligner un code comme celui-ci au centre:
let atrString = try NSAttributedString(
data: assetDetails!.cardDescription.dataUsingEncoding(NSUTF8StringEncoding)!,
options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType],
documentAttributes: nil)
assetDescription.attributedText = atrString
Vous devez créer un style de paragraphe spécifiant l'alignement au centre et définir ce style de paragraphe comme attribut sur votre texte. Exemple de terrain de jeu:
import UIKit
import PlaygroundSupport
let style = NSMutableParagraphStyle()
style.alignment = NSTextAlignment.center
let richText = NSMutableAttributedString(string: "Going through some basic improvements to a application I am working on. Still new to the iOS Swift development scene. I figured that the lines of text in my code would automatically be centered because I set the label to center.",
attributes: [ NSParagraphStyleAttributeName: style ])
// In Swift 4, use `.paragraphStyle` instead of `NSParagraphStyleAttributeName`.
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 400))
label.backgroundColor = UIColor.white
label.attributedText = richText
label.numberOfLines = 0
PlaygroundPage.current.liveView = label
Résultat:
Puisque vous analysez un document HTML pour créer votre chaîne attribuée, vous devrez ajouter l'attribut après sa création, comme ceci:
let style = NSMutableParagraphStyle()
style.alignment = NSTextAlignment.center
let richText = try NSMutableAttributedString(
data: assetDetails!.cardDescription.data(using: String.Encoding.utf8)!,
options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType],
documentAttributes: nil)
richText.addAttributes([ NSParagraphStyleAttributeName: style ],
range: NSMakeRange(0, richText.length))
// In Swift 4, use `.paragraphStyle` instead of `NSParagraphStyleAttributeName`.
assetDescription.attributedText = richText
Dans Swift 4, les noms d'attribut sont désormais de type NSAttributeStringKey
et les noms d'attribut standard sont des membres statiques de ce type. Vous pouvez donc ajouter l'attribut comme ceci:
richText.addAttribute(.paragraphStyle, value: style, range: NSMakeRange(0, richText.length))
Dans Swift 4.1:
let style = NSMutableParagraphStyle()
style.alignment = NSTextAlignment.center
lbl.centerAttributedText = NSAttributedString(string: "Total Balance",attributes: [.paragraphStyle: style])
(édité pour le bloc de code)