How to align text inside textView vertically? How to align text inside textView vertically? ios ios

How to align text inside textView vertically?


Link your Text View to your View Controller and name it as you want (let's say textView).

In viewDidLayoutSubviews function put this line:

textView.centerVertically()

Then under the last curly bracket of your class put this extension:

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    }   }

To use this function in Swift 2.0 just change CGFloat.greatestFiniteMagnitude to CGFloat.max


Swift 5

Put the following extension below your last curly bracket in your ViewController:

// MARK: - UITextView extensionextension UITextView {    func centerVerticalText() {        self.textAlignment = .center        let fitSize = CGSize(width: bounds.width, height: CGFloat.greatestFiniteMagnitude)        let size = sizeThatFits(fitSize)        let calculate = (bounds.size.height - size.height * zoomScale) / 2        let offset = max(1, calculate)        contentOffset.y = -offset    }}

Call this function after you set the text.

yourTextView.centerVerticalText()


If you want to do this using the storyboard, you could add a view inside of your textView. Then, set the constraints that you used for the textView to the new view. Finally, add the following constraints to your text view:

  • (right and left) O and point to the new view
  • using the alignment constraints, add a vertically constraint.

    enter image description here