У меня есть UITableViewCell, содержащий UITextView и UIImageView. В текстовом представлении прокрутка отключена. UITableViewCell использует автоматическую компоновку для расчета высоты в соответствии с содержимым.
Если текста больше, чем на скриншоте, я хочу, чтобы текст обтекал изображение и также использовал пространство под ним. Поэтому я использую путь исключения в текстовом представлении. Путь исключения устанавливается правильно, и текст обтекает изображение.
Пути исключения должны быть установлены после того, как автоматический макет вычислит кадры. Поскольку путь исключения блокирует некоторое пространство просмотра в текстовом представлении, содержащий текст больше не помещается в автоматический макет высоты, рассчитанный для текстового представления.
Как я могу заставить это работать вместе с автоматической компоновкой?
Я попытался установить ограничение высоты для текстового представления после установки путей исключения:
let size = textView.sizeThatFits(CGSize(width: textView.frame.size.width, height: CGFloat(MAXFLOAT)))
textView.heightAnchor.constraint(equalToConstant: size.height).isActive = true
Это не помогает. Мне нужно вызвать layoutSubviews()
в UITableViewCell, чтобы заставить его пересчитать свою высоту. Однако это создаст бесконечный цикл, поскольку я устанавливаю пути исключения в viewDidLayoutSubviews()
.
override func updateConstraints() { super.updateConstraints() let size = textView.sizeThatFits(CGSize(width: textView.frame.size.width, height: CGFloat(MAXFLOAT))) textView.heightAnchor.constraint(equalToConstant: size.height).isActive = true }
- person Eugene Dudnyk   schedule 15.06.2017