Я создаю 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)
}
Как я могу сделать их самостоятельными? Я думал, что это то, что я делал в setHeightToContent –
Вы, но вы вызываете его в 'viewDidLayoutSubviews'. Вы хотите сделать это при времени загрузки nib, а затем, если контент может измениться, в ответ на это. (Действительно, это может быть отчасти причиной задержки, поскольку вы выполняете макет в ответ на выполненный макет.) – matt
Кроме того, я не говорю, что вы делаете эту ошибку, но просто для того, чтобы быть уверенным: Не используйте текстовое представление, если метка будет работать. Ярлык очень, очень хорош, чтобы подрезать себя до высоты его содержимого. Поэтому, если пользователю не нужно вводить эту вещь, используйте метку, а не текстовое представление. – matt