• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 什么会触发 viewDidLayoutSubviews 并寻找一个好的模式来启动 subview 框架

[复制链接]
菜鸟教程小白 发表于 2022-12-12 14:55:32 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个与 Storyboard 中的自动布局相结合的应用,而一些旧的纯代码 View 没有自动布局

在我的 MainViewController 中,我尝试在 viewDidLayoutSubviews 和 viewWillAppear 中初始化边界、约束等 subview 。因为自动布局问题,我发现在 viewDidLayoutSubviews 中进行初始化是获得父 View 边界正确边界的最佳位置。

但是,我注意到 viewDidLayoutSubviews 在完全稳定之前会被调用 2-3 次,所以我必须处理是否是我第一次初始化我的 subview ,或者如果在自动布局后某些约束发生变化或大小发生变化,我必须更新我的框架.

现在我想改进它,但我无法弄清楚是什么调用了 viewDidLayoutSubviews 几次。

我想要的最好的事情是只调用一个 viewDidLayoutSubviews,然后我可以获得正确的大小来初始化我的 subview 。

我试过搜索,但有人说 viewDidLayoutSubviews 是系统调用的,所以不能保证它会被调用多少次。如果是这种情况,使用自动布局 subview 进行初始化的正确模式是什么?



Best Answer-推荐答案


viewDidLayoutSubiews 在创建 viewController 期间被多次调用 - 在任何具有 setNeedsLayoutsetNeedsDisplayWithRect: 的 View 上每次运行循环一次在旋转设备、滚动等情况下,也可以调用它。参见 link for more details .

基本上,每次主视图的布局更改时都会调用它,因此您应该非常小心添加到此方法的代码,因为它也可能会被执行多次。

关于ios - 什么会触发 viewDidLayoutSubviews 并寻找一个好的模式来启动 subview 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29340904/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap