调整UITextView问题的大小

时间:2015-11-30 10:58:26

标签: swift uitextview

我知道人们之前已经问过这个问题,但是看看他们的代码等......与我的相比,它没什么不同。

我正在尝试根据内容的大小调整我的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

如果有人可以帮助解决这个问题,我将非常感谢。

2 个答案:

答案 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