2017-01-28 2 views
0

Я хотел, чтобы плакат имел фиксированную высоту, а остальная часть содержимого должна быть динамически распределена. 2-й и 3-й разделы имеют текст, размер которого должен определяться динамически, поэтому его следует определять на основе содержания текста.Ячейки в статическом представлении таблицы не изменяются, как только загружается представление.

image

Содержимое изменение размера, только если экран прокручивается в течение как минимум 2 раза. Это код, который я написал в heightforrowat и оцененный heightforat.

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if indexPath.section == 0{ 
     return CGFloat(250) 
    } 
    else { 
     return UITableViewAutomaticDimension 
    } 
} 

override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 

    if indexPath.section == 0{ 
     return CGFloat(250) 
    } 
    else { 
     return UITableViewAutomaticDimension 
    } 

} 
+0

добавить высоту значение больше или равно метки в ячейке или набор номера строк в ноль для UILabel – Vinodh

+0

или установки ти высоты по умолчанию для Tableview в viewdidload как tableView.estimatedRowHeight = 68,0 и tableView.rowHeight = UITableViewAutomaticDimension. Это сработало для меня – Vinodh

+0

Я тоже пробовал делать это @Vinodh, но это работает для меня. –

ответ

1

Несколько вещей:

  1. Вы не должны использовать UITableViewAutomaticDimension в качестве возвращаемого значения для estimatedHeightForRowAt и вы должны просто вместо возврата фиксированного значения.

  2. Кроме того, необходимо установить numberOfLines до 0 и lineBreakMode в word wrap для всех в UILabels, которые имеют динамическую высоту.

  3. Удостоверьтесь, что у вас есть правильные настройки ограничений для каждого из UILabel, чтобы они правильно изменяли размер. То есть верх, низ, передний и задний ограничение его superview

+0

Спасибо @Rikh за ваши предложения, но они, похоже, не решают мою проблему. –

+0

Можете ли вы попытаться вызвать 'reloadData' на' viewDidAppear' для вашего 'UITableViewController' и посмотреть, решает ли это вашу проблему? – Rikh

+0

Это тоже работает. Интересно, есть ли ошибка с симулятором. –

0

Это не работает с ячейкой по умолчанию UITableViewController. Поэтому вместо этого я создал пользовательский UITableViewCell с одним ярлыком названия и описания с ограничениями. Отлично работает .

Пожалуйста найти прикрепленное изображение для справки

enter image description here Также, пожалуйста, найти исходный образец кода я использую.

https://www.dropbox.com/s/v8rgab3x8eirp3q/SelfSizingDemo.zip?dl=0

+0

Если текст статичен, то я пишу его самостоятельно, тогда он работает. Но я получаю текст с сервера. Ограничения, которые вы добавили в раскадровку, почти схожи с моими. Мне было интересно, есть ли проблема с симулятором. –

+0

делясь ко мне или попробуйте запустить на устройстве – Vinodh

+0

На самом деле я запускаю os x в vmware, и я не могу подключить свое устройство, я имею в виду, что Xcode не обнаруживает мое устройство. –

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

  • Нет связанных вопросов^_^