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

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 03.12.2015