Ios 如何在textView中垂直对齐文本?(Swift)

Ios 如何在textView中垂直对齐文本?(Swift),ios,swift,Ios,Swift,我发现这在链接到viewController的UITextView上非常有效,但我不知道如何让它在单独类中创建的UITextView上正常工作 我希望视图有三个单位(字符高度)高,内容垂直居中 情况就是这样: 另一方面,如果我将视图设置为4个单位高,它看起来很好,但我没有足够的空间。 以下是我所做的(这似乎适用于单行线) 我不相信简单地使用NSAttributedString就可以实现垂直对齐,但如果可能,请告诉我如何进行 谢谢 这将由用户编辑吗?因此,当用户键入时,文本将随着新行的添加而

我发现这在链接到viewController的UITextView上非常有效,但我不知道如何让它在单独类中创建的UITextView上正常工作

我希望视图有三个单位(字符高度)高,内容垂直居中

情况就是这样:

另一方面,如果我将视图设置为4个单位高,它看起来很好,但我没有足够的空间。

以下是我所做的(这似乎适用于单行线)

我不相信简单地使用
NSAttributedString
就可以实现垂直对齐,但如果可能,请告诉我如何进行


谢谢

这将由用户编辑吗?因此,当用户键入时,文本将随着新行的添加而垂直移动?否,它们将是表格的标题,并将保持不变。不可编辑?六羟甲基三聚氰胺六甲醚。。。那么为什么要使用
UITextView
<代码>UILabel自动垂直居中文本…当然!最初,我将标题和表中的所有数据放在一起,但将标题分离出来进行格式化。。。有时候,你不得不站出来呼吸新鲜空气,重新审视全局!非常感谢。(再次!)撇开简单的解决方案不谈,为什么上述方法不起作用?如果文本确实发生了变化怎么办?
class TestClass: UIView {

    var titleView1 = UITextView()
    var titleView2 = UITextView()

    override func layoutSubviews() {
        titleView1.centerVertically()
        titleView2.centerVertically()
    }


    override func draw(_ rect: CGRect) {
        super.draw(rect)

        let h = 3 * GlobalConstants.fontSize // 3 * 14 = 42

        var title = "Single Line"
        var bounds = CGRect(x: 10, y: 10, width: 100, height: h)
        displayTitle(str: title, column: &titleView1, bounds: bounds)

        title = "First Line\nSecondLine"
        bounds = CGRect(x: 120, y: 10, width: 100, height: h)
        displayTitle(str: title, column: &titleView2, bounds: bounds)
    }


    func displayTitle(str: String, column: inout UITextView, bounds: CGRect) {
        
        let view = UITextView(frame: bounds)
        
        let attributes: [NSAttributedString.Key: Any] = [
            .foregroundColor: UIColor.blue,
            .font: UIFont.italicSystemFont(ofSize: 16)
        ]
        let attributedText = NSMutableAttributedString(string: str, attributes: attributes)

        view.attributedText = attributedText
        view.textAlignment = .center

        view.centerVertically()

        self.autoresizesSubviews = true
        self.addSubview(view)

    }

}