我已经在我的iOS应用程序中实现了语言本地化。因此,现在用户可以在我的iPad应用程序中设置阿拉伯语。
我从服务器获得本地化的字符串响应,现在我想将此本地化字符串设置为我的UILabel
,格式为右对齐的从右到左格式。
更新:
我的服务器响应已经是 RTL 格式。现在,我只想在UILabel
中有阿拉伯语文本时将文本对齐方式设置为右对齐。
现在,我必须编写代码来根据语言设置UILabel
的对齐方式。
因此,我只想知道是否有任何属性可供UILabel
,通过设置,我可以在阿拉伯语的情况下使UILabel
文本右对齐。
对于 Swift3标记:UILabel扩展
extension UILabel {
func decideTextDirection () {
let tagScheme = [NSLinguisticTagSchemeLanguage]
let tagger = NSLinguisticTagger(tagSchemes: tagScheme, options: 0)
tagger.string = self.text
let lang = tagger.tag(at: 0, scheme: NSLinguisticTagSchemeLanguage,
tokenRange: nil, sentenceRange: nil)
if lang?.range(of:"ar") != nil {
self.textAlignment = NSTextAlignment.right
} else {
self.textAlignment = NSTextAlignment.left
}
}
要使用此标签,请在标签中添加以下内容:
detailLabel.text = details[0]
detailLabel.decideTextDirection()
试试这个。
[[self label] setTextAlignment:NSTextAlignmentNatural];
自动布局 + RTL + UILabel 文本对齐方式
希望这能解决您的问题。
如果您从服务器获取阿拉伯语文本,则正常显示文本,就像在英语中一样,而无需对齐它。恰到好处地对齐文本。
使文本标签显示视图的整个宽度。然后文本将从屏幕右侧右对齐。
对于任何想要使用自然语言库的示例的人(NSLinguisticTagger 已被弃用)。这建立在@jaspreetkour的答案之上,也适用于属性文本。
extension UILabel {
func decideTextDirection () {
let recognizer = NLLanguageRecognizer()
var txt = self.text ?? ""
if txt.isEmpty {
// check attributed text
txt = self.attributedText?.string ?? ""
}
if !txt.isEmpty {
recognizer.processString(txt)
if let language = recognizer.dominantLanguage {
switch language {
case .arabic:
self.textAlignment = .right
default:
self.textAlignment = .left
}
}
}
}
}