gpt4 book ai didi

swift - UITextView高度调整

转载 作者:行者123 更新时间:2023-11-30 11:43:21 26 4
gpt4 key购买 nike

我正在尝试创建一个 ViewController 来保存一些大文本。我使用了 UILabel,但由于文本可能很长,所以它不起作用。尝试切换到 UITextView,但遇到一些问题。

我使用的是ScrollView,因为顶部有图像,底部有按钮。所以我不会在 UITextView 本身内部滚动。我已经禁用它了。

我想根据文本长度自动调整文本高度。因此它可以滚动图像、按钮等。就像 Instapaper、Medium、Pocket 等应用程序一样。

我已经尝试了 StackOverflow 上的所有代码和解决方案,但它们要么不起作用,要么都是 Objective-C。

Storyboard结构: View Controller -> View -> ScrollView -> 图像、 TextView 、按钮

class ViewController: UIViewController {

@IBOutlet weak var textView: UITextView!
var theContent = fromClass.text

override func viewDidLoad() {
super.viewDidLoad()
textView.text = theContent
}
}

最佳答案

有几种方法可以更改 UITextView 的大小

extension String {

func bounds(approximated width: CGFloat, approximated height: CGFloat, font: UIFont) -> CGRect {
let size = CGSize(width: width, height: height)
let attribs = [NSAttributedStringKey.font: font]

return NSString(string: self).boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attribs, context: nil)
}
}

近似宽度 = UITextView 的宽度我认为它将是您不会更改的静态值。

近似高度 = UITextView 的最小高度。

该方法将返回文本输入的框架。从它的 height 属性中获取,并根据大小改变 UITextView 的大小。

如果它不能满足您,您可以使用其他方式。

func heightOfString(_ attributes: [NSAttributedKeyString : Any]) -> CGFloat {
let size = self.size(withAttributes: attributes)
return size.height
}

与上面的用法相同。

关于swift - UITextView高度调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49093824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com