2016-08-25 2 views
3

Я не могу достичь самостоятельного размера UITableViewCell с UIStackView внутри него.Как я могу настроить размер UITableViewCell с UIStackView внутри него

Для UITableViewCell я делаю что-то вроде этого:

ui

В коде я это делаю:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.tableView.estimatedRowHeight = 80 
} 

Но когда я запустить приложение, то UITableViewCell s Безразлично с изменениями размеров:

result

Что я пропущу, чтобы сделать собственный размер UITableViewCell с UIStackView внутри него?

+0

FWIW 'distribution' свойство важно. Иногда вы получаете неожиданные результаты, если вы не настроите это правильно. – Honey

ответ

0

Уловка для автоматической компоновки ячеек для работы с UITableViewCell заключается в том, чтобы у вас были ограничения на привязку каждого подзаголовка со всех сторон - то есть каждое подчиненное устройство должно иметь ведущие, верхние, конечные и нижние ограничения. Затем внутренняя высота подзонов будет использоваться для определения высоты каждой ячейки.

Здесь a nice tutorial, который поможет вам в этом.

+2

Благодарим вас за ответ. У меня есть все булавки (ведущие, верхние, конечные и нижние), но я использую 'UIStackView', и у него есть все метки. Проблема заключается в том, что содержимое 'UIStackView' не изменяется автоматически. – pableiros

0

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

Вот apple explanation.

HTH

+0

Какие противопоказания мне нужно установить между собой и над ним? – pableiros

+0

Я добавил равную ширину 'UIStackView' в' UITableViewCell', теперь размер 'UIStackView' изменяется, но' UITableViewCell' не изменяет размер. – pableiros

2

У вас есть многострочные этикетки? Если это так, убедитесь, что у вас есть свойство линий в IB, установленное на 0, а не 1.

Верх и нижние части стека.

Если это не сделать, проверить эти:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 
+0

Я добавил булавки раньше, это показано на изображении, которое я добавил в вопрос. Я добавил два метода делегата и до сих пор не работает – pableiros

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