UICollectionViewでセル毎に動的にサイズを変更していて、最初は問題なかったがinsertItemsAtIndexPathsで追加した時とかに正常に表示されなかった。
大きいはずのところが小さかったり、小さいはずが大きかったり。
かなり詰まったが原因判明。
カスタムセルを使用していて、contentViewにaddSubViewするかたちでUIImageViewとUILabelを追加していた。
これがセルを再利用するときに、小さかったセルを大きいセルのために再利用するとセル自体はちゃんと大きくなっているが、UIImageViewのサイズが小さいままでいたため小さく見えた。逆も然り。
よってcellForItemAtIndexPathとかでcellの大きさに合わせてUIImageViewの大きさを変えてあげればいい。(そもそも、セルのbackgroundViewに設定していれば問題なかったけど後になって気づいた。。。)
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell:CustomCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CustomCell
let thumb:UIImage = images[indexPath.row]
cell.titleLabel?.text = data.objectForKey("title") as? String;
cell.thumbView?.image = thumb;
cell.thumbView?.frame.size = cell.frame.size//そもそもImageViewをbackgroundViewにすべき?
return cell;
}
ラベルの位置とかも修正しなきゃいかんけど。カスタムセル側でdidSetとかで変えれば楽かな