xib中的frame

使用XIB自定义cell,并且使用了Masonry,所以在awakeFromNib 方法中是拿不到正确的frame的。拿到的是xib中初始设置的大小。机智的我,把设置方法写到了layoutSubviews中。果然还是不正确。

layoutSubviews的调用时机:

  • addsubview方法,会触发父view和子view的layoutSubviews方法;
  • 设置了不同的frame,会触发;
  • scrollview滑动的时候,触发scrollview及子view的layoutSubviews方法;
  • 设备旋转,触发vc的layoutsubviews;
  • removeFromSuperView,会触发父view的layoutsubviews。

为了在layoutSubviews中拿到正确的frame,要强制让cell布局一次,同事给的方法是在layoutSubviews中强制cell更新。暂时未发现异常。

- (void)layoutSubviews {
    [super layoutSubviews];
    [self.contentView setNeedsLayout];
    [self.contentView layoutIfNeeded];
    // your code here
    // ...
}

如果你看到此文,如果你有更好方法,请留言,谢谢。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容