У меня есть множество ячеек в моем приложении, как это. Некоторые размеры сами, другие нет.
Например, предположим, что у нас есть пользовательская UITableViewCell. 100 высота. Внутри его представления содержимого мы перетаскиваем 2 UIView. UIViewTop и UIViewBottom. Каждая 50 в высоту. UIViewTop мы размещаем в верхней части представления контента и задаем ему ограничения Leading/Trailing/Top/Height. UIViewBottom мы размещаем в нижней части представления контента и задаем ему ограничения Leading/Trailing/Bottom/Height. Мы также задаем ограничение вертикального интервала между UIViewTop и UIViewBottom.
Теперь иногда мы хотим, чтобы отображался только UIViewTop, а иногда мы хотим, чтобы отображались UIViewTop и UIViewBottom. Итак, мы перетаскиваем ограничение UIViewBottomHeight как IBOutlet NSLayoutConstraint.
Затем в cellForRowAtIndexPath... мы устанавливаем это ограничение IBOutlet либо на 0, либо на 50, в зависимости от того, хотим ли мы показывать эту часть или нет.
Если у нас есть саморегулирующиеся ячейки, мы ничего не делаем. Если у нас нет ячеек с собственным размером, размер ячейки точно определяется в heightForRowAtIndexPath.
Я получаю предупреждение при обоих обстоятельствах. В отладчике это произойдет сразу после следующего кода...
`cell.constraintUIViewBottomHeight.constant = __`
Я хочу иметь возможность изменять константы ограничения, но не получать предупреждение Unable to simultaneously satisfy constraints
в консоли.
2 ответа
Я предполагаю, что приоритет ограничения ограниченияUIViewBottomHeight равен Required/1000. Я бы попробовал, понизив приоритет до 999 или что-то в этом роде, чтобы избавиться от предупреждения.
Похоже, проблема возникает из-за того, что у вас есть как ограничение по высоте, так и ограничение снизу для контейнера в UIView внизу. Если вы измените высоту, ограничение нижней части контейнера будет отключено. Вы должны иметь возможность использовать только высоту (или только нижнюю часть контейнера) и полностью избавиться от ограничения нижней части контейнера (или ограничения высоты). Автоматическая компоновка требует только достаточного количества ограничений, чтобы определить уникальный размер и местоположение элемента.
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.