在开发中,我们都会选择使用Masonry来做适配,但是有时我们又需要获取某个控件的frame,这时就会发现用Masonry布局的获取不到控件的frame。
这是因为用Masonry布局时控件的还没有在视图上展示出来,所以frame也就没有了,具体原理就得看Masonry实现的原理了,单用frame布局的就会有。
这时如果我们需要获取到frame的话就得刷新视图
[self.view layoutIfNeeded];
这个方法将会刷新视图。在这个方法后就能获取frame
想要再深入了解的可以点这个链接看看
https://www.jianshu.com/p/87565c06117c
在这里对于这链接稍微加上我个人的理解
LayoutIfNeeded并不是马上就刷新布局的,而是在系统认为在合适的情况下刷新的,至于什么是合适的情况小编就不知道了。如果需要马上刷新可以在LayoutIfNeeded前加上setNeedsLayout
// 像这样
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
如果仅仅是想获取frame直接用layoutIfNeeded就可以了