Как выровнять текст внутри textView вертикально?

Я хочу выровнять по вертикали текст внутри моего UITextView (так что он будет посередине). Как я могу это достичь? Я поднял глаза и не мог найти ответа, который мог бы мне помочь.

Спасибо заранее.

Ответ 1

Свяжите текстовое представление с вашим viewcontroller и назовите его как хотите (скажем, textView).

В функции viewDidLayoutSubviews вставьте эту строку:

textView.centerVertically()

Затем под последней фигурной скобкой вашего класса поместите это расширение:

  extension UITextView {

    func centerVertically() {
        let fittingSize = CGSize(width: bounds.width, height: CGFloat.greatestFiniteMagnitude)
        let size = sizeThatFits(fittingSize)
        let topOffset = (bounds.size.height - size.height * zoomScale) / 2
        let positiveTopOffset = max(1, topOffset)
        contentOffset.y = -positiveTopOffset
    }

}

Чтобы использовать эту функцию для swift2, просто измените CGFloat.greatestFiniteMagnitude на CGFloat.max

Ответ 2

Если вы хотите сделать это с помощью раскадровки, вы можете добавить представление внутри вашего textView. Затем установите ограничения, которые вы использовали для textView для нового представления. Наконец, добавьте следующие ограничения в текстовое представление:

  • (вправо и влево) O и укажите на новый вид
  • используя ограничения выравнивания, добавьте ограничение по вертикали.

    enter image description here