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

Swift

描画前に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を作った方がいいのかもしれないですね。

コメントを残す