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