如何调整textView的大小以适合其内容(根据contentsize调整textview的大小)
我正在尝试调整textView的大小以适合其内容,该内容是多行长文本。
我不明白的
对于stackoverflow有一个直接的答案,它基本上使用“ sizeThatFits”方法。 此方法要求UIView计算适合其内容的大小。 多好。
但这对我来说不起作用,我也不明白为什么。
我做了什么
我的代码如下所示:
导入UIKitclass ViewController:UIViewController {
@IBOutlet弱var topTextView:UITextView!
@IBOutlet弱var bottomTextView:UITextView!
覆盖func viewDidLoad(){
super.viewDidLoad()让LONGTEXT = “hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge” topTextView.text = LONGTEXT
bottomTextView.text = longText
topTextView.isScrollEnabled = true
bottomTextView.isScrollEnabled = false
调整大小(textView:topTextView)
调整大小(textView:bottomTextView)
}
fileprivate func resize(textView:UITextView){
var newFrame = textView.frame
让width = newFrame.size.width
让newSize = textView.sizeThatFits(CGSize(width:width,
高度:CGFloat.greatestFiniteMagnitude))
newFrame.size = CGSize(width:width,height:newSize.height)
textView.frame = newFrame
}
}
这是我的故事板。
这就是我得到的:
TopTextView的高度仅为40px,但BottomTextView的大小已相应调整。
为什么? 因为TopTextView已启用滚动。
我现在如何理解
如果启用了滚动,似乎UITextView不会调整大小。
因此,下一个问题是:计算出的尺寸是否错误? 还是忽略了框架设置?
似乎“ sizeThatFits”在两个textView上都计算出166.67px的高度,这是正确的。 大小计算没有问题。
这意味着(可能)设置了UITextView的frame属性,但是如果启用了滚动,则将其忽略。
我还是不明白
为什么忽略框架? 这是我的想法:
UITextView是UIScrollView的子级,也许UITextView的框架与UIScrollView的框架不同。 如描述所述,初始化UITextView将“使用指定的文本容器创建一个新的文本视图”。
即使设置了UITextView的框架,也并不意味着UIScrollView的框架将进行相应的调整。。。只是猜测,如果有人可以让我知道原因,我将不胜感激!