忽略导致 UITextView 末尾换行的额外空格

Extra whitespace that causes a newline by UITextView at end is ignored

这是我的代码:

import UIKit

class ViewController: UIViewController {
    init() {
        super.init(nibName: nil, bundle: nil)

        let textView = UITextView(frame: .zero)
        textView.isScrollEnabled = false
        textView.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(textView)

        NSLayoutConstraint.activate([
           textView.widthAnchor.constraint(equalToConstant: 150),
            textView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            textView.centerYAnchor.constraint(equalTo: view.centerYAnchor)
        ])

        // As we can see, LOT'S of whitespace at the end.
        textView.text = "Some Random Text That Has Whitespaces At The End                                                        "

        view.backgroundColor = .yellow
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError()
    }
}

这是结果:

根据空格的数量,它应该创建一个空的换行符。然而,正如我们所见,情况并非如此。如果我在字符串的最后添加另一个字符,将显示换行符(但带有我不想要的字符)。

如果 UITextView 中需要,如何显示空换行符?

使用这个:

‏‏‎ ‏‏‎

引用中有一些不可见的字符,iOS不算作whiteSpace

要添加额外的行,请使用“\n”,例如:

textView.text = "Some Random Text That Has Whitespaces At The End \n\n"

结果:

https://i.imgur.com/ju2hfd0.jpg

您可以强制任何 UITextView 的文本具有填充,即从其边缘缩进 - 通过将其 textContainerInset 属性 设置为您选择的值。例如,要从底部边缘给文本视图插入 50 点,您可以使用此代码:

Swift版本:5.0

textView.textContainerInset = UIEdgeInsets(top: 0, left: 0, bottom: 50, right: 0)