2016-03-24 16 views
0

私はストーリーボードにコレクションビューを持っています。私はストーリーボードにセルの一部を、プログラムで作成したセルの一部を持っています。 sizeForItemAtIndexPath方法で何をすればよいですか?私はどの値を返すべきですか?私のプログラムで作成されたセルでは、私は彼のサイズを返します。しかし、私はストーリーボードからのセルのためのストーリーボードからコピーサイズを望んでいません。私は意味、私が持っている:ストーリーボードとプログラムで作成されたセルのセルを混ぜる

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
     return self.viewModels[indexPath.item].viewSize // for programmatically created cells 
} 

とのViewModelクラス:

class ViewModel { 
    var viewSize:CGSize = CGSizeMake(50, 50)//for example 
} 

はまた、私はストーリーボードにsettedそれのストーリーボードとサイズから細胞を持っています。たとえば、ストーリーボードには5つの異なるセルがあり、それぞれに異なるサイズがあります。私はしなければならない?

let viewModel = self.viewModels[indexPath.item] 
if viewModel.id == "CELL_1" { return CGSizeMake(10, 10) } 
else if viewModel.id == "CELL_2" { return CGSizeMake(20, 20) } 
//and so on 

私はこれをしたくない:( は、私はストーリーボードからアイテムのサイズを取得、またはこのメソッドが実装されていない場合の動作を作成することができますどのように解決策を知っていますか?(私が意味する、あなたがいない場合あなたは、その再利用IDを用いて細胞をインスタンス化して呼び出すことができます

答えて

0

に)その後、コレクションビューはストーリーボードのサイズを取得します。このメソッドを実装します。

cell.setNeedsLayout() 
cell.layoutIfNeeded() 

を、それが実際のサイズです取得するには、セルの枠にアクセス

+0

どのように私はcellを取得する必要がありますsizeForItemAtPath? collectionView.deque ... withIdentifierでセルを取得しようとするとクラッシュする –

+0

プロトタイプセルからNIBファイルを分離して手動で読み込むことができます。 – paulvs

+0

私はtableView/collectionViewを操作するためのライブラリを作成します。そして、私はユーザーがそれをどのように使用するのか、不幸にも –