6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UICollectionViewでセル毎にサイズを変更する時に メモ

Posted at

UICollectionViewでセル毎に動的にサイズを変更していて、最初は問題なかったがinsertItemsAtIndexPathsで追加した時とかに正常に表示されなかった。
大きいはずのところが小さかったり、小さいはずが大きかったり。
かなり詰まったが原因判明。

カスタムセルを使用していて、contentViewaddSubViewするかたちでUIImageViewUILabelを追加していた。
これがセルを再利用するときに、小さかったセルを大きいセルのために再利用するとセル自体はちゃんと大きくなっているが、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とかで変えれば楽かな

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?