Search code examples
iosswifttextviewswift3

How to align text inside textView vertically?


I want to align vertically the text inside my UITextView (so it will be in the middle of it). How can i achieve that? I looked up and could not find any answer that could help me.

Thanks in advance.


Solution

  • 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