safeAreaInsetsDidChange调用时机咨询:首次布局后何时再次触发?
关于
safeAreaInsetsDidChange的调用时机补充 嘿,除了你已经了解的「视图首次布局子视图时触发」,当屏幕处于展示状态时,这些场景都会再次调用safeAreaInsetsDidChange方法:
- iPad分屏/悬浮窗操作:比如调整分屏的宽度比例(把App窗口拉宽或收窄)、在全屏/分屏/悬浮窗模式之间切换,都会导致安全区域Insets变化,触发方法。
- 状态栏/导航栏/工具栏的动态变化:比如视频播放时状态栏自动隐藏、导航栏的大标题折叠/展开、底部工具栏因键盘弹出/收起而位移,这些元素的尺寸或显示状态改变都会影响安全区域,进而触发方法。
- 设备旋转:当设备在竖屏和横屏之间切换时,安全区域的Insets会随屏幕方向重新计算,所以这个方法会被调用。
- 动态岛状态变化:针对iPhone 14 Pro及以上机型,动态岛展开显示详细内容(比如导航、音乐控制)或收起时,安全区域的Insets会发生改变,触发方法。
- 外接显示器连接/切换:如果设备连接了外接显示器,切换显示模式(比如镜像/扩展)或者断开外接显示器时,安全区域Insets可能会更新,导致方法调用。
- App内视图层级的重大变化:比如弹出/消失覆盖全屏的模态视图、添加/移除占据安全区域的顶部/底部视图,这些操作会改变当前窗口的安全区域范围,触发方法。
本质上,只要safeAreaInsets属性的数值发生了变化,系统就会自动调用safeAreaInsetsDidChange来通知你处理布局调整。
内容的提问来源于stack exchange,提问作者henrik-dmg
相关产品推荐
相关产品推荐

