2015-12-08 4 views
0

У меня есть UITextView с ограничением высоты, чтобы приспособить высоту кадра к его контенту (в зависимости от длины строки). (Я использую автозапуск). Он работает нормально.Размер UITextView после установки его высоты в зависимости от его содержимого SWIFT

caseAcaseB

Но я не понимаю, что-то о размере TextView кадра.

поясните.

Я отображаю информацию о кадре после установки текста uitextview и после обновления ограничения.

override func viewDidLoad() { 
    ... 
    self.textview.text = post.title 
    ... 
} 

override func viewDidLayoutSubviews() { 

    let contentSize = self.textview.sizeThatFits(self.textview.bounds.size) 
    self.heightConstraint.constant = contentSize.height 
    self.textview.layoutIfNeeded() 

    print(self.textview.frame) // frame 
    print(self.textview.bounds) // bounds 
}  

Результат:

Для случая А:

(8.0, 0.0, 584.0, 97.0) //frame 
(0.0, 0.0, 584.0, 97.0) //bounds 

для случая B:

(8.0, 0.0, 584.0, 97.0) //frame 
(0.0, 0.0, 584.0, 97.0) //bounds 

Я не понимаю, почему высота рамы такая же в обоих случаях ???

+0

Показать нам свои ограничения. Вам не нужно обновлять какое-либо ограничение в коде, чтобы получить результат, который вы хотите, если они правильно настроены (с правильной установкой приоритетов сжатия и обнимания). – jcaron

+0

Есть ли какой-нибудь специальный случай, когда вы используете UITextView вместо UILabel? – DevAndArtist

+0

Да, потому что мне нужно использовать exclusionPaths в textContainer, вокруг кнопки «Назад». – cmii

ответ

0

Это позволит решить проблему, если вам не нужен скроллинг часть UITextView:

class ViewController: UIViewController { 

    let textView = UITextView() 

    override func viewDidLoad() { 

     super.viewDidLoad() 

     self.view.backgroundColor = UIColor.whiteColor() 

     self.view.addSubview(self.textView) 
     self.textView.backgroundColor = UIColor.redColor() 
     self.textView.text = "Hello world Hello world Hello world Hello world Hello world Hello world" 

     self.textView.translatesAutoresizingMaskIntoConstraints = false 
     self.textView.topAnchor.constraintEqualToAnchor(self.view.topAnchor).active = true 
     self.textView.leftAnchor.constraintEqualToAnchor(self.view.leftAnchor).active = true 
     self.textView.rightAnchor.constraintEqualToAnchor(self.view.rightAnchor).active = true 

     self.textView.scrollEnabled = false // magic which will help auto expanding 
    } 
} 
Смежные вопросы