web-dev-qa-db-ja.com

NSAttributedStringでUILabelのテキストを中央揃え

私が取り組んでいるアプリケーションのいくつかの基本的な改善を行っています。 iOSにはまだ新しいSwift開発シーン。ラベルを中央に設定しているため、コード内のテキスト行が自動的に中央に配置されることがわかりました。このようにコードを中央に揃えるにはどうすればよいですか:

let atrString = try NSAttributedString(
   data: assetDetails!.cardDescription.dataUsingEncoding(NSUTF8StringEncoding)!, 
   options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType], 
   documentAttributes: nil)
assetDescription.attributedText = atrString
26
cruelty

中央揃えを指定する段落スタイルを作成し、その段落スタイルをテキストの属性として設定する必要があります。遊び場の例:

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

結果:

centered text in label

HTMLドキュメントを解析して属性付き文字列を作成しているため、次のように作成後に属性を追加する必要があります。

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

Swift 4の更新

Swift 4)では、属性名はNSAttributeStringKey型になり、標準属性名はその型の静的メンバーになります。したがって、次のように属性を追加できます。

richText.addAttribute(.paragraphStyle, value: style, range: NSMakeRange(0, richText.length))
73
rob mayoff

In Swift 4.1:

let style = NSMutableParagraphStyle()

style.alignment = NSTextAlignment.center

lbl.centerAttributedText = NSAttributedString(string: "Total Balance",attributes: [.paragraphStyle: style])

(コードブロック用に編集)