Итак, у меня есть представление коллекции в UIView, которое содержится в представлении прокрутки. (См. Ниже)
Содержимое представления коллекции изменяется в зависимости от размера в зависимости от выбранной вкладки. Когда количество элементов в представлении коллекции мало (IE <= 4 элемента ), Я хочу показать следующую кнопку в нижней части экрана <strong>. Если содержимое представления коллекции больше (IE> 4 элемента), я хочу разрешить прокрутку экрана вниз (что работает в настоящее время) и следующую кнопку, которая будет размещена ниже содержимого представления коллекции.
При первой загрузке экрана, на вкладке с <= 4 пунктами, следующая кнопка помещается в правильное положение. Если я переключусь на вкладку с> 4 игроками, следующая кнопка будет правильно размещена под коллекцией, как и ожидалось. Однако, когда я возвращаюсь на вкладку с <= 4 игроками, следующая кнопка помещается в неправильное положение, намного выше на экране. </p>
Теперь вернемся к вкладке с меньшим количеством игроков, возникает проблема:
См. Здесь вопрос:
https://drive.google.com/file/d/12eREBZlBZoCs-F5DJd-I26YcLc3pRqRJ/view?usp=sharing
Обратите внимание, что когда я переключаюсь обратно с форвардов на полузащитников, следующая кнопка размещается неправильно, тогда как в первый раз на полузащитниках была правильно расположена следующая кнопка.
Мой код для изменения размера представления коллекции и изменения позиция следующей кнопки находится ниже.
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CollectionViewCell
//Setup Img & Label
cell.playerImageView.image = playerArray!.filter({ $0.position == pos })[indexPath.row].image
resizeCollectionView() //Setup view size after items calculated
return cell
}
Метод изменения размера (называется выше):
func resizeCollectionView() {
self.collectionViewHeightConstraint.constant = collectionView.collectionViewLayout.collectionViewContentSize.height
if self.playerArray!.filter({ $0.position == pos }).count <= 4 {
self.nextBtn.topAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -120).isActive = true
}
else {
self.nextBtn.topAnchor.constraint(equalTo: collectionView.bottomAnchor, constant: 50).isActive = true
}
self.nextBtn.translatesAutoresizingMaskIntoConstraints = false
self.view.layoutIfNeeded()
}
Написано в быстром 4
Может кто-нибудь указать мне правильное направление, почему эта проблема возникает? Заранее спасибо!
РЕДАКТИРОВАТЬ: @Dris, когда я добавляю ваше изменение для ограничения, результат будет: