проблема динамической высоты ячейки представления коллекции - PullRequest
0 голосов
/ 05 мая 2018

Я хочу реализовать collectionView, который поддерживает динамические высоты для ячейки, зависит от autoLayout. у меня есть ячейка продукта, которая содержит изображение, и в нижней части его вид в стеке, который содержит его цену и цену со скидкой, и timerLabel, где закончится предложение продукта. иногда у продукта нет предложения, поэтому мне нужно скрыть таймер от stackView, тогда высота ячейки изменится. я использовал этот код

override func viewDidLoad() {
    super.viewDidLoad()
homeCollection.delegate = self
homeCollection.dataSource = self
homeCollection.register(UINib(nibName: "ProductCell", bundle: Bundle.main), forCellWithReuseIdentifier: "cell")
(homeCollection.collectionViewLayout as! UICollectionViewFlowLayout).estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize

}

затем для проверки в cellForItemAtIndex я использовал этот код

 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! ProductCell
    if indexPath.row  == 0
      {
        cell.productTimerLabel.isHidden = true

      }
return cell

} выход был такой enter image description here моя проблема, почему topAligment первой ячейки больше, чем top allment второй ячейки, я хочу, чтобы оба они имели одинаковый aligment

1 Ответ

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

Для этого вам нужен пользовательский UICollectionViewLayout, потому что UICollectionViewFlowLayout всегда центрирован и выровнен не так, как вы хотите.

Я бы посоветовал вам использовать Макет потока с выравниванием коллекции , который я использовал с Github. У него есть свойство, которое позволяет вам выравнивать по верху с verticalAlignment = .top

...