Динамическая высота для UICollectionView внутри StackView - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь выяснить, как установить ограничения AutoLayout для UICollectionView внутри UIStackView (или без StackView) и чувствую себя сбитым с толку.Другие ответы о StackOverflow, которые я нашел, похоже, не имеют прямого отношения.

Вот что у меня есть:

-----------------------------------
|  -----------------------------  |
|  |    UICollectionView # 1    | | (Sticky header for whole view)
|  -----------------------------  |
|  -----------------------------  |
|  |    UICollectionView # 2    | | (Table/grid with sections)
|  -----------------------------  |
|  -----------------------------  |
|  |    Button                  | |
|  -----------------------------  |
|  -----------------------------  |
|  |    UICollectionView # 3    | | (Sticky footer)
|  -----------------------------  |

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

Я могу установить ограничения для представлений # 1, # 3 и кнопки, но #2 рост неизвестен.Как настроить его так, чтобы представление могло динамически изменять высоту, НО вид # 3 всегда виден.

Т.е. вид № 2 начнет прокручиваться, если станет слишком длинным, а вид № 3 останется видимым.

1 Ответ

0 голосов
/ 28 января 2019

Если вы хотите представление коллекции с самоопределением размера, вы должны создать NSLayoutConstraint для высоты представления коллекции:

@IBOutlet weak var collectionViewHeightConstraint: NSLayoutConstraint!

Затем, в viewDidLayoutSubviews, обновить ограничение высоты и разметитьпредставление:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    collectionViewHeightConstraint.constant = collectionView.collectionViewLayout.collectionViewContentSize.height
    view.layoutIfNeeded()
}

При перезагрузке представления коллекции обязательно вызовите viewDidLayoutSubviews:

collectionView.reloadData()
viewDidLayoutSubviews()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...