我正在尝试创建一个包含大量文本的ViewController。我使用UILabel
,但由于文字可能很长,所以它不会起作用。试图切换到UITextView
,但我遇到了一些问题。
我使用ScrollView
,因为顶部有一个图像,底部有一个按钮。所以我不会在UITextView
内部滚动。我已经禁用了它。
我希望Text根据文本长度自动调整高度。所以它可以滚动图像,按钮等。就像应用程序Instapaper,Medium,Pocket等。
我已尝试过StackOverflow上的所有代码和解决方案,但它们要么不起作用,要么是Objective-C。
故事板结构: 视图控制器 - >查看 - > ScrollView - >图像,TextView,按钮
class ViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
var theContent = fromClass.text
override func viewDidLoad() {
super.viewDidLoad()
textView.text = theContent
}
}
答案 0 :(得分:0)
改变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)
}
}
approximated width
=您UITextView
的宽度我认为它将是静态值,您不会改变。
approximated height
= UITextView
的最小高度。
该方法将返回文本输入的框架。取自它的高度属性,取决于有多大改变UITextView
的大小。
如果它不能让你满意,你可以用另一种方式。
func heightOfString(_ attributes: [NSAttributedKeyString : Any]) -> CGFloat {
let size = self.size(withAttributes: attributes)
return size.height
}
与上面相同的用法。