如果文本为阿拉伯语,则使 UILabel 文本右对齐



我已经在我的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
                }
            }
        }
    }
}

最新更新