Вам не нужно обновлять макет, как это, при изменении представления коллекции.
Фактически, поскольку вы используете макет потока, должен быть намного более простой способ заставить его делать то, чтоВы хотите.
Я полагаю, что segmentHeight
и segmentWidth
- это функции, которые зависят от размера представления сбора, поэтому вам нужно пересчитать их?
Если это так, то вам следуетбыть в состоянии использовать delegate
функции UICollectionViewFlowLayout
.
Сначала обновите контроллер представления новым протоколом ...
class MyViewController: UICollectionViewDelegateFlowLayout
Это позволит вашему контроллеру представления действоватьв качестве делегата для схемы потока.
И используйте метод ...
func collectionView(UICollectionView, layout: UICollectionViewLayout, sizeForItemAt: IndexPath) -> CGSize {
return CGSize(width: segmentWidth(), height: segmentHeight())
}
Что должно быть .
Если я 'мы что-то упустили, дайте мне знать, но вы должны получить все, что вы хотите от этого.
После этого просто удалите метод layoutSubviews
, и он должен работать так, как вы хотите.