![](/img/trans.png)
[英]Multiline UILabel with right-to-left text and auto adjusted font size
[英]UILabel not working with NSAttributedString + NSParagraphStyle for Right-To-Left
我在使用NSParagraphStyle
時將NSAttributedStrings
與NSParagraphStyle
使用的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"
結果是:
[
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.