Отрегулируйте константу collectionViewCell динамически для использования в автоматическом макете - PullRequest
0 голосов
/ 17 мая 2018

У меня есть UICollectionView, который отображает ячейки с UILabel и ниже, чем UIView. UIView использует topAnchor с константой от 10 до UILabel.

Некоторые ячейки будут иметь нулевое значение для UILabel. В этом случае я хочу, чтобы константа, используемая в topAnchor, была 0.

Я могу установить константу для каждой ячейки (используя didSet наблюдателя в ячейке). Макет однако я не могу обновить. view.layoutIfNeeded() не делает этого. Ниже приведен код. Я благодарен за любые указатели. Спасибо !!

Это здесь, в классе ячейки:

var photoMarginToTop = CGFloat()

var post: Post? {
    if post?.title != nil {
        titleLabel.text = post?.title
        photoMarginToTop = 10
        updateLayout()
    }

    if post?.title == nil {
        photoMarginToTop = 0
        updateLayout()
    }
}

func updateLayout() {
    photoView.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: photoMarginToTop).isActive = true
    photoView.layoutIfNeeded()
}

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Похоже, вы пытаетесь создать динамические высоты для своих ячеек?

Я бы посоветовал вам подкласс UICollectionViewFlowLayout и следуйте этому руководству Рэя Вендерлиха .Они берут случайные высоты изображения и соответственно меняют размер ячейки.

0 голосов
/ 17 мая 2018

Функция layoutIfNeeded () размещает подвиды представления, а не представления, которому вы передали эту функцию.Итак, обновите расположение ячеек напрямую.

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