safeAreaInsets 未按预期更新

Posted

技术标签:

【中文标题】safeAreaInsets 未按预期更新【英文标题】:The safeAreaInsets is not updating as expected 【发布时间】:2021-11-22 11:35:17 【问题描述】:

我有一个控制两个视图控制器的侧边菜单控制器。其中一个视图控制器隐藏了导航栏,以便它可以使用全屏。我添加了一个点击手势,以便能够切换到其他 VC。 safeAreaInsets 如预期的那样,除非我在应用程序后台运行。如果我在显示带有可见导航栏的 VC 时将应用程序置于后台,则一切正常,当我切换到另一个时,该栏被隐藏并且我看到全屏。但是,如果我在全屏 VC 显示时将应用程序置于后台,当我再次将应用程序置于前台并切换到另一个 VC 时,取消隐藏导航栏,safeAreaInsets 是错误的。这可以通过将应用程序置于后台并再次将其置于前台来“纠正”,因为 safeAreaInsets 再次正确。

有什么方法可以强制更新 safeAreaInsets 吗?

如果我

override func viewSafeAreaInsetsDidChange()

此方法在我后台应用时调用,而不是在导航栏隐藏或取消隐藏时调用。

【问题讨论】:

【参考方案1】:

我找到了解决方案。在父视图控制器上,我在隐藏/取消隐藏导航栏时执行此操作:

view.setNeedsUpdateConstraints()

【讨论】:

以上是关于safeAreaInsets 未按预期更新的主要内容,如果未能解决你的问题,请参考以下文章

sqlCommandBuilder 更新未按预期工作

Vue 计算属性未按预期更新

PostgreSQL 更新未按预期工作

AccessDataSource 上的更新命令未按预期更新表

mycursor.executemany 更新未按预期工作

SQL 更新代码与“在哪里存在”未按预期运行