问题
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