ios - Centrar el texto en una UILabel con una NSAttributedString
nsattributedstringkey (2)
Debe crear un estilo de párrafo que especifique la alineación central y establecer ese estilo de párrafo como un atributo en su texto. Ejemplo de patio de recreo:
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
Resultado:
Ya que está analizando un documento HTML para crear su cadena atribuida, deberá agregar el atributo después de la creación, como esto:
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
Actualización para Swift 4
En Swift 4, los nombres de atributo ahora son de tipo NSAttributeStringKey
y los nombres de atributo estándar son miembros estáticos de ese tipo. Así que puedes agregar el atributo así:
richText.addAttribute(.paragraphStyle, value: style, range: NSMakeRange(0, richText.length))
Pasando por algunas mejoras básicas a una aplicación en la que estoy trabajando. Todavía nuevo en la escena de desarrollo swift de iOS. Pensé que las líneas de texto en mi código se centrarían automáticamente porque establecía la etiqueta en el centro. Después de un poco de investigación descubrí que este no es el caso. ¿Cómo alinearía código como este al centro?
let atrString = try NSAttributedString(
data: assetDetails!.cardDescription.dataUsingEncoding(NSUTF8StringEncoding)!,
options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType],
documentAttributes: nil)
assetDescription.attributedText = atrString
En Swift 4.1:
let style = NSMutableParagraphStyle()
style.alignment = NSTextAlignment.center
lbl.centerAttributedText = NSAttributedString(string: "Total Balance",attributes: [.paragraphStyle: style])
(editado para bloque de código)