簡體   English   中英

UILabel無法與NSAttributedString + NSParagraphStyle一起使用,從右向左

[英]UILabel not working with NSAttributedString + NSParagraphStyle for Right-To-Left

我在使用NSParagraphStyle時將NSAttributedStringsNSParagraphStyle使用的UISemanticContentAttributeForceRightToLeft

我有一個演示應用程序,UI上只有兩個標簽。

它們具有前導和尾隨約束。

兩個標簽

我在AppDelegate中使應用程序從右到左

UIView.appearance().semanticContentAttribute = .forceRightToLeft

我只是用以下代碼配置標簽

let labelAText = "Foo"

let mutAttrString = NSMutableAttributedString(string: labelAText)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .natural
paragraphStyle.baseWritingDirection = .natural

mutAttrString.setAttributes([NSAttributedStringKey.paragraphStyle: paragraphStyle.copy()], range: NSMakeRange(0, labelAText.count))

labelA.attributedText = mutAttrString
labelB.text = "Bar"

結果是:

[ 標簽錯誤[2]

labelB (Bar)正常工作,但labelA (Foo)無效。 如果我只是刪除NSParagraphStyle它將開始工作。 請注意,我什至沒有更改任何內容,只是通過使用它就弄亂了對齊方式。

有什么想法可能導致這種情況?

NSMutableParagraphStyle具有屬性baseWritingDirection (枚舉NSWritingDirection )。 將其設置為rightToLeft

嘗試這個

paragraphStyle.baseWritingDirection = NSWritingDirection.rightToLeft


編輯 :(可能對您有幫助)

如果屬性(baseWritingDirection)的值為NSWritingDirectionNaturalDirection,則接收者將根據用戶語言首選項設置的方向將寫入方向解析為NSWritingDirectionLeftToRight或NSWritingDirectionRightToLeft。

class func defaultWritingDirection(forLanguage languageName: String?) -> NSWritingDirection

languageName :以ISO語言區域格式指定的語言。 可以為nil以返回從用戶的默認數據庫得出的默認書寫方向。


使用languageName =“ ar”的解決方案

@IBOutlet weak var labelA: UILabel!

let labelAText = "Foo"
let mutAttrString = NSMutableAttributedString(string: "Foo")
let paragraphStyle = NSMutableParagraphStyle()
//paragraphStyle.alignment = .natural
paragraphStyle.baseWritingDirection = NSParagraphStyle.defaultWritingDirection(forLanguage: "ar")
mutAttrString.setAttributes([NSAttributedStringKey.paragraphStyle: paragraphStyle], range: NSMakeRange(0, labelAText.count))

labelA.attributedText = mutAttrString

這是語言列表:語言名稱表示的代碼

注意:語言請使用ISO 639-1代碼。 標簽文本的方向取決於語言的自然方向。

結果如下:

在此處輸入圖片說明


此Apple文檔將為您提供幫助- 支持從右到左的語言

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM