4

我在 textView 中有一个阿拉伯语(从右到左)文本,当我设置 时myTextView.alignment = .justify,文本中的最后一行转到左侧。如何为 textView 设置中心对齐或如何将最后一行移动到中心?

4

3 回答 3

1

用这个

self.textView.textAlignment = .justified //set text alignment center and justified

self.textView.makeTextWritingDirectionRightToLeft(true)//if you want set writing direction right to left

self.textView.makeTextWritingDirectionLeftToRight(true)//if you want set writing direction left to right
于 2019-07-23T07:08:50.673 回答
0

就做吧

于 2017-08-06T06:10:01.463 回答
0

有趣的问题,我会尝试计算 textView 中的行数并剪切最后一行,而不是尝试将剪切的文本放在 textView 下方的新标签中......;)

在询问我将如何做到这一点后,我添加了这个:

print(self.testLabel.frame.width)
self.testLabel.text = "Hello World"
self.testLabel.sizeToFit()
print(self.testLabel.frame.width)

这是您可以使用的起点。创建一个标签并将宽度设置为零。插入文本并设置 sizeToFit()。现在您可以获得标签的长度。是否对您的视图很长,它将有更多的行...(分隔符是您的长度-未经测试,也许也需要偏移量)

现在的想法是,只要您的行数不止一个,并且在计算开始时行数相同,就可以减去最后一个单词并将其放在临时字符串的开头。如果返回,您将获得最后一行的子字符串。

我很感兴趣并从这个开始:

@IBOutlet weak var textBox: UITextView!
@IBOutlet weak var testLabel: UILabel!

override func viewWillAppear(_ animated: Bool) {
        print(self.testLabel.frame.width)
        self.testLabel.text = self.textBox.text
        self.testLabel.sizeToFit()
        print("total \(self.testLabel.frame.width)")
        let basicAmount = Int(self.testLabel.frame.width / self.textBox.frame.width) + 1
        print("lines \(basicAmount)")
        var lastLine: String = ""

        while basicAmount == Int(self.testLabel.frame.width / self.textBox.frame.width) + 1 {
            var arr = self.textBox.text.components(separatedBy: " ")
            lastLine = "\(arr.last) \(lastLine)"
            arr.removeLast()
            self.textBox.text = arr.joined(separator: " ")
            self.testLabel.text = self.textBox.text
            self.testLabel.sizeToFit()
            print(lastLine)
        }
    }

有趣的输出是:

total 1499.5
lines 7
Optional("civiuda.") 

我使用了这个基本文本

当然,由于行尾的空闲空间,您应该花更多的时间进行计算...

于 2017-08-06T11:02:22.050 回答