読者です 読者をやめる 読者になる 読者になる

Keep It Real BLOG

ソフトウェアエンジニア。1児の父。 酒、ラーメン、サッカー好き。旅行も好きですが、普段は出不精で大抵たまプラーザ界隈に居ます。

xibでUICollectionViewCellを定義した際に、cellのviewファイル内でのframeサイズ異常

f:id:naohide_a:20151202194822p:plain 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には、入れておいた方が良いかもしれないですね。