xib中的frame

使用XIB自定义cell,并且使用了Masonry,所以在awakeFromNib 方法中是拿不到正确的frame的。拿到的是xib中初始设置的大小。机智的我,把设置方法写到了layoutSubviews中。果然还是不正确。
【xib中的frame】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 // ... }

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

    推荐阅读