2016-10-16 5 views
0

Привет Я пытаюсь установить динамическую высоту ячейки.Как установить динамическую высоту ячейки?

enter image description here

Вот мой UICollectionViewCell

import UIKit 
import Parse 
import ActiveLabel 
class UserShopDetailCell: UICollectionViewCell { 

    @IBOutlet weak var postImg: UIImageView! 

    @IBOutlet weak var likesLbl: UILabel! 
    @IBOutlet weak var usernameLbl: UILabel! 
    @IBOutlet weak var commentLbl: ActiveLabel! 
    @IBOutlet weak var descriptionLbl: ActiveLabel! 
    @IBOutlet weak var profileImg: UIImageView! 
    @IBOutlet weak var timeLbl: UILabel! 

    @IBOutlet weak var descriptionTop: NSLayoutConstraint! 
    @IBOutlet weak var commentTop: NSLayoutConstraint! 
    @IBOutlet weak var timeTop: NSLayoutConstraint! 


    override func awakeFromNib() { 



    } 


} 

И это collectionviewcontroller

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize { 

    let cellsAcross: CGFloat = 3 
    let spaceBetweenCells: CGFloat = 1 
    let dim = (collectionView.bounds.width - (cellsAcross - 1) * spaceBetweenCells)/cellsAcross 

    var width = 114.0 


    if(isGridView==true){ 
     return CGSize(width: 114, height: 114) 
    } 
    else { 



//I want set dynamic height...not constant values 
     return CGSize(width: 375, height: 500) 
    } 


} 




override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 



    if isGridView == false { 

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "UserShopDetailCell", for: indexPath) as! UserShopDetailCell 

... ..... ......

let basicHeight = cell.frame.size.width + 23 + cell.usernameLbl.frame.height + 1 + cell.likesLbl.frame.height 

      let bottomHeight = cell.timeTop.constant + cell.timeLbl.frame.height + 12 

     var dynamicHeight = basicHeight + bottomHeight 

     cell.frame.size.height = dynamicHeight 
     cell.sizeToFit() 
     cell.sizeThatFits(CGSize(width: 375, height: dynamicHeight)) 
     cell.contentView.sizeThatFits(CGSize(width: 375, height: dynamicHeight)) 


return cell 
} 

} 

enter image description here

Как вы можете видеть .. пробел - 500 высота - динамическая высота.

Я хочу, наконец, установить высоту ячейки с динамических значений высоты.

Но когда я устанавливаю CGSize, тогда динамическая высота не работает, когда она больше, чем CGSize.

Как я могу решить эту проблему?

ответ

1

Следуйте этим инструкциям, чтобы создать ячейки для самостоятельного измерения размера в коллекции. Не нужно использовать метод sizeForItemAtIndexPath при создании ячеек с использованием метода valuItemSize и автоматического макета.

  1. набор estimatedItemSize на collectionViewFlowlayout
  2. использования авто макета, чтобы установить правильное ограничение для collectionviewcell подкласса

сошлитесь link и tutorial о том, как использовать себя проклейку клетки с использованием Автокомпоновки

вот ссылка проекта Github

+0

Спасибо за ответ, не могли бы вы сообщить мне как я могу использовать в быстром.? –

Смежные вопросы