描画前にcellのframeサイズを取りたい
xibでUICollectionViewCellを定義すると、viewファイルのframeのサイズが、xibで定義したファイルのサイズになってしまいます。
例えば、xibでUICollectionViewCellの幅を320としていると、iPhone6では本来幅375が欲しいのに、取れないといった具合です。
もちろん、描画する際には、正しいframeのサイズを取得することが可能なのですが、描画前にframeサイズを使いたいことがあり、どうするのか分かりませんでした。
色々調べたところ、以下のようにしたら、上手くframeサイズを変更することが出来ました。
class CustomCell: UICollectionViewCell { // 色々なところで載っている以下の方法では上手くいかなかった // override var bounds: CGRect { // didSet { // contentView.frame = bounds // } // } override func awakeFromNib() { super.awakeFromNib() self.contentView.frame = self.bounds self.contentView.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight] } }
何かと便利だと思うので、UICollectionViewCellのviewには必ず入れておいた方が良いかもしれないですね。
こういう必須なものをまとめて入れておいた、共通クラスを作っておいて、それを継承してcellを作った方がいいのかもしれないですね。