Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
swift中UILabel中的文本对齐_Swift_Uitextview - Fatal编程技术网

swift中UILabel中的文本对齐

swift中UILabel中的文本对齐,swift,uitextview,Swift,Uitextview,我有一个字符串,有英语和波斯语单词;因此,我想将波斯语段落对齐设置为RTL,英语段落对齐设置为LTR。我使用此代码进行文本对齐,但它不会根据语言对齐每个段落,它只检查文本的第一个单词并将其与RTL或LTR对齐 例如: 我想这样设置文本: 但这是我的结果: 你需要两个标签。一个标签只能有一个对齐方式。尝试此操作,您将获得所需的输出://对于从右到左的UIView.appearance().semanticContentAttribute=.forceRightToLeft//对于从左到右的UIV

我有一个字符串,有英语和波斯语单词;因此,我想将波斯语段落对齐设置为RTL,英语段落对齐设置为LTR。我使用此代码进行文本对齐,但它不会根据语言对齐每个段落,它只检查文本的第一个单词并将其与RTL或LTR对齐

例如: 我想这样设置文本: 但这是我的结果:


你需要两个标签。一个标签只能有一个对齐方式。尝试此操作,您将获得所需的输出://对于从右到左的UIView.appearance().semanticContentAttribute=.forceRightToLeft//对于从左到右的UIView.appearance().semanticContentAttribute=.forceLeftToRight/
extension String {
    func naturalTextAligment() -> NSTextAlignment {
        let tagschemes = [NSLinguisticTagScheme.language]
        let tagger = NSLinguisticTagger(tagSchemes: tagschemes, options: 0)
        tagger.string = self as String
        let language = tagger.tag(at: 0, scheme: .language, tokenRange: nil, sentenceRange: nil)        
        var alignment: NSTextAlignment = .natural        
        if language == nil {
            return alignment
        }        
        let direction = NSLocale.characterDirection(forLanguage: language.map { $0.rawValue } ?? "")        
        switch direction {
        case .leftToRight:
            alignment = .left
        case .rightToLeft:
            alignment = .right
        default:
            alignment = .natural
        }

        return alignment
    }