我知道人们之前已经问过这个问题,但是看看他们的代码等......与我的相比,它没什么不同。
我正在尝试根据内容的大小调整我的UITextView的大小。在iPhone 6和6 Plus上,代码工作正常。
然而,在iPhone 4s和5上,在纵向模式下,它会切断部分内容,但在横向上会再次出现。
这是我为调整高度添加的代码:
let fixedWidth = DetailsViewer.frame.size.width
DetailsViewer.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
let newSize = DetailsViewer.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
var newFrame = DetailsViewer.frame
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
DetailsViewer.frame = newFrame
heightConstraint.constant = newFrame.height
如果有人可以帮助解决这个问题,我将非常感谢。
答案 0 :(得分:0)
我知道这适用于UIWebViews,代码如下。
func webViewDidFinishLoad(webView: UIWebView) {
webView.frame.size.height = 1
webView.frame.size = webView.sizeThatFits(CGSizeZero)
}
相当于以下内容:(调整大小结束,您可以使用任何其他方法,具体取决于您想要做什么)
func textViewDidBeginEditing(textView: UITextView) -> Bool {
textView.frame.size.height = 1
textView.frame.size = textView.sizeThatFits(CGSizeZero)
}
请记住在导入和设置委托之前:
class myClass: UIViewController, UITextViewDelegate {
/*your code*/
myTextView.delegate = self
}
希望这会有所帮助:)
答案 1 :(得分:0)
我找到了解决方案。我需要将整个代码块移动到viewDidAppear中,而不是将它放在viewWillAppear
让fixedWidth = DetailsViewer.frame.size.width DetailsViewer.sizeThatFits(CGSize(width:fixedWidth,height:CGFloat.max)) let newSize = DetailsViewer.sizeThatFits(CGSize(width:fixedWidth,height:CGFloat.max)) var newFrame = DetailsViewer.frame newFrame.size = CGSize(width:max(newSize.width,fixedWidth),height:newSize.height) DetailsViewer.frame = newFrame heightConstraint.constant = newFrame.height