如何在UITextView中居中对齐文本?

时间:2017-08-06 06:03:17

标签: ios swift swift3 uitextview text-justify

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

3 个答案:

答案 0 :(得分:0)

只需要它.center 我知道你到底在找什么,因为我以前去过那里,只有你能成功。中心

答案 1 :(得分: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.") 

I used this basic text

当然,由于线末端的自由空间,你应该花更多的时间在计算中......

答案 2 :(得分:0)

使用此

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
相关问题