Существует несколько вопросов о переполнении стека об авто-макете ячеек UITableView и заголовках/нижних колонтитулах разделов, относящихся к ограничениям UIView-Encapsulated-Layout-Width, которые использует UITableView, чтобы сделать его компоненты правильными.
- что такое NSLayoutConstraint "UIView-Encapsulated-Layout-Height" и как я должен заставить его пересчитать чистоту
- iOS 8.3 'UIView-Encapsulated-Layout-Width' в пользовательской клавиатуре
- Автоматическая компоновка: что создает ограничения с именем UIView-Encapsulated-Layout-Width и Height?
- Что такое ограничение UIView-Encapsulated-Layout-Width?
Цель этих ограничений кажется довольно ясной - они позволяют UITableView, а также UICollectionView взаимодействовать с макетом ограничений и передавать в своей спецификации о том, как большие ячейки (и другие компоненты) должны быть.
Большинство проблем, по-видимому, состоят в том, что у людей есть набор обязательных ограничений, которые несовместимы с этими ограничениями инкапсуляции, также требующими размера 0. Наиболее эффективные ответы, по-видимому, состоят в том, чтобы снизить приоритет определяемых пользователем ограничений до 999, чтобы инфраструктура могла их отменить.
Однако, что меня интересует, почему UITableView требуется ширина 0 для одного из его представлений? Это ошибка? Или это результат неправильного использования? Или это имеет смысл?
Ограничения по высоте 0 иногда имеют смысл, если ячейки расширяются из ничего. Снижение приоритетов - хороший способ справиться с этим. Но почему ячейки будут получать ширину 0?