2017-04-17 7 views
0

変更したいアライメントiOS Swift 3 Xcode 8.3に変更します。
すべてのものが正しく動作しますが、アラインメントについてはわかりませんattributes
このような マイコード:NSMutableAttributedStringの整列方法iOS Swift 3

extension String { 
    func htmlAttributedString() -> NSAttributedString? { 
     guard let data = self.data(using: String.Encoding.utf16, allowLossyConversion: false) else { return nil } 

     let style = NSMutableParagraphStyle() 
     style.alignment = NSTextAlignment.center 


     guard let html = try? NSMutableAttributedString(
      data: data, 
      options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,NSTextAlignment:.center], 
      documentAttributes:nil) else { return nil } 


     return html 
    } 
} 

答えて

2

エラーを取得する理由はoptionsパラメータの型の辞書であるということです:、[String : Any]NSDocumentTypeDocumentAttribute(文字列)を渡すとNSTextAlignment(INT)は違法である(辞書が強く型付けされています) 。

解決策はNSMutableParagraphStyleを使用してオプションとして追加することです。すでに宣言されていて、整列を.centerに設定しましたが、使用していません!

次のようにあなたは、(代わりにNSTextAlignmentの)NSParagraphStyleAttributeNameキーでそれを追加する必要があります

extension String { 
    func htmlAttributedString() -> NSAttributedString? { 
     guard let data = self.data(using: String.Encoding.utf16, allowLossyConversion: false) else { return nil } 

     let style = NSMutableParagraphStyle() 
     style.alignment = NSTextAlignment.center 

     guard let html = try? NSMutableAttributedString(
      data: data, 
      options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, 
         NSParagraphStyleAttributeName: style], 

      documentAttributes:nil) else { return nil } 

     return html 
    } 
} 

注意をNSParagraphStyleAttributeNameデータ型はオプションdictionaryのデータ型は-legally-なることを意味文字列であること[String : Any]

関連する問題