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
とかで変えれば楽かな