灵动岛上获取的导航栏高度出错
按照系统计算方式,导航栏+状态栏为 59 + 44 的高度
但是代码中得到的数值为 53.667 + 44
2.1.1版本已修复
感谢大佬,导航栏高度问题已经解决。
同时发现新的问题,导航栏控制器内的子控制器 View 的 view.safeAreaLayoutGuide.topAnchor 会往上偏移5个点,发现有灵动岛设计的顶部安全高度会多出来5个点(来自文章:https://useyourloaf.com/blog/iphone-14-screen-sizes/ )
设备:iPhone 15 Pro Max
😷😷😷使用系统的 UI 调试了下,发现了个神奇的现象
navBar 的高度是 safeTop + navBarHeight = 103
但是控制器视图从 safeTop 的起始位置却仅为 97.667
结论: navBar 的高度 103,y 起点位置是 safeTop 的 -59,也是屏幕顶部的 -5,至于苹果为什么要这么做,暂时还想不明白 也就是大佬原来的算法是正确,被我的 Issue 误导了,非常抱歉🤐
感谢大佬,导航栏高度问题已经解决。 同时发现新的问题,导航栏控制器内的子控制器 View 的 view.safeAreaLayoutGuide.topAnchor 会往上偏移5个点,发现有灵动岛设计的顶部安全高度会多出来5个点(来自文章:https://useyourloaf.com/blog/iphone-14-screen-sizes/ ) 设备:iPhone 15 Pro Max
😷😷😷使用系统的 UI 调试了下,发现了个神奇的现象
navBar 的高度是 safeTop + navBarHeight = 103 但是控制器视图从 safeTop 的起始位置却仅为 97.667
结论: navBar 的高度 103,y 起点位置是 safeTop 的 -59,也是屏幕顶部的 -5,至于苹果为什么要这么做,暂时还想不明白 也就是大佬原来的算法是正确,被我的 Issue 误导了,非常抱歉🤐
这样会造成 safearea 与 navbar 之间存在一个 5 的差值, 如果View的 top是对齐safearea的 Top, 那么会有一部分被遮盖或者重合. 我修改了adjustsLayout, 可以更少的操作业务代码(一堆 storyboard 很难调诶)
func adjustsLayout() {
guard let navigationBar = superNavigationBar else { return }
if automaticallyAdjustsPosition {
let statusBarHeight = UIApplication.shared.statusBarFrame.height
frame = navigationBar.frame
frame.origin.y = statusBarHeight
} else {
frame.size = navigationBar.frame.size
}
frame.size.height = navigationBar.frame.height + _additionalHeight
}
那就是还要改回去?


