【发布时间】:2019-05-29 00:17:44
【问题描述】:
我正在尝试将UITextView中的文本垂直居中对齐。搜索后,我找到了代码,它似乎可以工作,直到我们开始键入并在光标跳转时按 Enter 键。当我们在文本视图中键入时按 Enter 键时,光标会跳转以调整其位置,我假设这是由于它被调用/实现的方式。
有没有更好更优雅的解决方案?
我已将其实现为 UITextView 扩展。此代码取自Center text vertically in a UITextView 上建议的解决方案之一
我的问题是解决跳跃问题。这不是上述问题的重复。
extension UITextView {
func alignTextVerticallyInContainer() {
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 + 1
}
}
然后调用它
override func viewDidLayoutSubviews() {
textView.alignTextVerticallyInContainer()
}
【问题讨论】:
标签: ios swift uitextview