How to align text inside textView vertically?

我们两清 提交于 2019-12-18 12:52:33

问题


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.


回答1:


Link your textview to your viewcontroller 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 for swift2 just change CGFloat.greatestFiniteMagnitude to CGFloat.max




回答2:


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.




回答3:


The above answer is correct, just want to add solution for those updating the textView on real time/onEditing.

Use the above extension and add the delegate method as well.

func textViewDidChange(_ textView: UITextView) { textView.centerVertically() }



来源:https://stackoverflow.com/questions/41387549/how-to-align-text-inside-textview-vertically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!