在Masonry布局中怎么获取一个控件的frame

在开发中,我们都会选择使用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就可以了

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

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,043评论 3 119
  • 一阵雨过后, 桂花清香淡淡萦绕。 沉闷了一天的心情,泛起些许波澜。 成年人的世界里, 本就没有什么理所当然, 更多...
    井溢阅读 2,523评论 0 3
  • 我的朋友吕人英最近时常愁眉不解。 对此我很好奇,因此借着近期几次卧床夜谈的机会,与他进行了深度的交流。 吕人英向来...
    第二十三先生阅读 4,914评论 0 0
  • 盼望着,盼望着,春暖花开了,夏天的脚步近了。 旭日东升,喀什疏勒像刚睡醒的样子,欣欣然张开了眼。金刚的身板儿朗润起...
    周万亮阅读 1,872评论 0 2