Проблема с изменением размера 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

Если бы кто-нибудь мог помочь в этом вопросе, я был бы очень признателен.


person Kumar    schedule 30.11.2015    source источник


Ответы (2)


Я знаю, что это работает с 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
}

Надеюсь это поможет :)

person LinusGeffarth    schedule 30.11.2015

Я нашел решение. мне нужно было переместить весь блок кода в viewDidAppear вместо того, чтобы иметь его в viewWillAppear

пусть fixedWidth = DetailsViewer.frame.size.width DetailsViewer.sizeThatFits(CGSize(ширина: fixedWidth, высота: CGFloat.max)) let newSize = DetailsViewer.sizeThatFits(CGSize(ширина: fixedWidth, высота: CGFloat.max)) var newFrame = DetailsViewer.frame newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height) DetailsViewer.frame = newFrame heightConstraint.constant = newFrame.height

person Kumar    schedule 03.12.2015