Изменение фрейма и содержимого Inset UICollectionView в layoutSubviews() с помощью IGListKit
Мне нужно изменить frame
и верхняя вставка содержимого (contentInset.top
) моего представления коллекции (который является UICollectionView
). Изменения верхней вставки и кадра зависят от границ суперпредставления и смещения содержимого представления коллекции, поэтому я помещаю изменяющий вставку код в layoutSubviews()
,
override func layoutSubviews() {
super.layoutSubviews()
collectionView.collectionViewLayout.invalidateLayout()
collectionView.contentInset.top = new_inset_top
collectionView.frame = new_frame
}
Тем не менее, представление коллекции не учитывает новые вставки, и журнал показывает следующее:
Поведение UICollectionViewFlowLayout не определено, потому что: высота элемента должна быть меньше высоты UICollectionView минус верхние и нижние значения вставок раздела, минус верхние и нижние значения вставок содержимого.
Как это исправить, чтобы представление коллекции отображалось правильно?
Я использую IGListKit
1 ответ
Вам не нужно делать все это внутри layoutSubviews
,
в viewDidLoad
реализовать это следующим образом
func viewDidLoad() {
super.viewDidLoad()
// let say you want 40px top inset
collectionView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0)
}
Другое дело, что я не понимаю, почему вы устанавливаете кадр в layoutSubviews
, Там нет необходимости устанавливать frame
изменить contentInset
,