2015-05-02 2 views
2

Я создаю viewController, который содержит 2 textViews заголовок и полный текст. На данный момент я создал 2 textViews в построителе интерфейса, который расположен ниже друг друга, а затем создал следующий код, чтобы изменить высоту, равную содержанию. Однако проблема заключается в том, что она, похоже, задерживается, что создает плохую работу пользователей. Задержка означает, что для изменения размера требуется 0,5 или 1 сек? Вот мой код:textView height, равный размеру содержимого без viewDidLayoutSubviews

override func viewDidLayoutSubviews() { 

    super.viewDidLayoutSubviews() 

    setHeightToContent(self.titleText!) 
    setHeightToContent(self.fullText!) 

    scrollView?.contentSize = CGSizeMake(self.view.frame.width, self.fullText!.frame.origin.y + self.fullText!.frame.height) 
    println(self.fullText!.frame.origin.y + self.fullText!.frame.height) 



} 


func setHeightToContent(theTextView: UITextView) { 

    let contentSize = theTextView.sizeThatFits(theTextView.bounds.size) 
    var frame = theTextView.frame 
    frame.size.height = contentSize.height 
    theTextView.frame = frame 

    var aspectRatioTextViewConstraint = NSLayoutConstraint(item: theTextView, attribute: .Height, relatedBy: .Equal, toItem: theTextView, attribute: .Width, multiplier: theTextView.bounds.height/theTextView.bounds.width, constant: 1) 
    theTextView.addConstraint(aspectRatioTextViewConstraint) 
} 

ответ

0

сделать каждый из текста рассматривает себя проклейку в соответствии со своим собственным содержанием, а также использовать ограничение, так что вид свитка contentSize конфигурируется автоматически на основе его содержание.

+0

Как я могу сделать их самостоятельными? Я думал, что это то, что я делал в setHeightToContent –

+0

Вы, но вы вызываете его в 'viewDidLayoutSubviews'. Вы хотите сделать это при времени загрузки nib, а затем, если контент может измениться, в ответ на это. (Действительно, это может быть отчасти причиной задержки, поскольку вы выполняете макет в ответ на выполненный макет.) – matt

+0

Кроме того, я не говорю, что вы делаете эту ошибку, но просто для того, чтобы быть уверенным: Не используйте текстовое представление, если метка будет работать. Ярлык очень, очень хорош, чтобы подрезать себя до высоты его содержимого. Поэтому, если пользователю не нужно вводить эту вещь, используйте метку, а не текстовое представление. – matt

Смежные вопросы