Кнопка под UICollectionView неправильно позиционируется с ограничениями в зависимости от размера содержимого (Swift) - PullRequest
0 голосов
/ 30 марта 2020

Итак, у меня есть представление коллекции в UIView, которое содержится в представлении прокрутки. (См. Ниже) enter image description here

Содержимое представления коллекции изменяется в зависимости от размера в зависимости от выбранной вкладки. Когда количество элементов в представлении коллекции мало (IE <= 4 элемента ), Я хочу показать следующую кнопку в нижней части экрана <strong>. Если содержимое представления коллекции больше (IE> 4 элемента), я хочу разрешить прокрутку экрана вниз (что работает в настоящее время) и следующую кнопку, которая будет размещена ниже содержимого представления коллекции.

При первой загрузке экрана, на вкладке с <= 4 пунктами, следующая кнопка помещается в правильное положение. Если я переключусь на вкладку с> 4 игроками, следующая кнопка будет правильно размещена под коллекцией, как и ожидалось. Однако, когда я возвращаюсь на вкладку с <= 4 игроками, следующая кнопка помещается в неправильное положение, намного выше на экране. </p>

enter image description here

enter image description here

enter image description here

Теперь вернемся к вкладке с меньшим количеством игроков, возникает проблема:

enter image description here

См. Здесь вопрос:

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, когда я добавляю ваше изменение для ограничения, результат будет: enter image description here

...