首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UILabel不使用从右到左的NSAttributedString + NSParagraphStyle

UILabel不使用从右到左的NSAttributedString + NSParagraphStyle
EN

Stack Overflow用户
提问于 2018-01-18 16:37:55
回答 1查看 1.3K关注 0票数 2

我在使用UILabels时遇到了使用NSAttributedStringsNSParagraphStyle的问题。

我有一个演示应用程序,只有两个标签上的UI。

他们有领导和尾随的限制。

我在AppDelegate中从右向左制作这个应用程序

代码语言:javascript
复制
UIView.appearance().semanticContentAttribute = .forceRightToLeft

我只是用下面的代码配置标签

代码语言:javascript
复制
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,它就开始工作了。请注意,我甚至没有改变它上的任何东西,但只是通过使用它是混乱的对齐。

对是什么原因有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-18 16:46:56

NSMutableParagraphStyle有一个属性baseWritingDirection (enum NSWritingDirection)。将其设置为rightToLeft

尝尝这个

代码语言:javascript
复制
paragraphStyle.baseWritingDirection = NSWritingDirection.rightToLeft

编辑:(愿此对您有所帮助)

如果属性值(baseWritingDirection)为NSWritingDirectionNaturalDirection,则接收方根据用户语言首选项设置的方向将写入方向解析为NSWritingDirectionLeftToRight或NSWritingDirectionRightToLeft。

代码语言:javascript
复制
class func defaultWritingDirection(forLanguage languageName: String?) -> NSWritingDirection

languageName:以ISO语言区域格式指定的语言。可以为零,以返回从用户默认数据库派生的默认写入方向。

使用languageName = "ar“的解决方案

代码语言:javascript
复制
@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 代码作为语言。标签文本的方向取决于语言的自然方向。

结果如下:

这个苹果文档将帮助你- 支持从右到左的语言

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48326178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档