2016-10-16 3 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 
} 

} 

​​

ご覧のとおり、空白は500高さ - 動的高さです。

最終的にセルの高さを動的な高さの値から設定します。

しかし、CGSizeを設定すると、CGSizeより大きい場合に動的高さが機能しません。

どのようにこの問題を解決できますか?

答えて

1

次の手順に従って、collectionviewで自己サイジングセルを作成します。 estimatedItemSizeと自動レイアウトを使用してセルを作成するときは、sizeForItemAtIndexPathメソッドを使用する必要はありません。

  1. あなたcollectionviewcellサブクラス

の正しい制約を設定するためのセットestimatedItemSize

  • collectionViewFlowlayout
  • 上で使用する自動レイアウトは、オートレイアウトに

    を用いたセルフサイジング細胞を使用する方法についてlinktutorialを参照してください。ここにはGithubプロジェクトリンクがあります

    +0

    お返事ありがとうございます私はどのように迅速に使用するのですか? –

    関連する問題