attributed ios swift uilabel nsattributedstring

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)