EachNavigationBar icon indicating copy to clipboard operation
EachNavigationBar copied to clipboard

灵动岛上获取的导航栏高度出错

Open chen570075003 opened this issue 1 year ago • 4 comments

按照系统计算方式,导航栏+状态栏为 59 + 44 的高度 但是代码中得到的数值为 53.667 + 44 WX20240328-下午70021@2x

chen570075003 avatar Mar 28 '24 11:03 chen570075003

2.1.1版本已修复

Pircate avatar Apr 26 '24 00:04 Pircate

感谢大佬,导航栏高度问题已经解决。 同时发现新的问题,导航栏控制器内的子控制器 View 的 view.safeAreaLayoutGuide.topAnchor 会往上偏移5个点,发现有灵动岛设计的顶部安全高度会多出来5个点(来自文章:https://useyourloaf.com/blog/iphone-14-screen-sizes/ ) 设备:iPhone 15 Pro Max image

😷😷😷使用系统的 UI 调试了下,发现了个神奇的现象 image

navBar 的高度是 safeTop + navBarHeight = 103 但是控制器视图从 safeTop 的起始位置却仅为 97.667 image

结论: navBar 的高度 103,y 起点位置是 safeTop 的 -59,也是屏幕顶部的 -5,至于苹果为什么要这么做,暂时还想不明白 也就是大佬原来的算法是正确,被我的 Issue 误导了,非常抱歉🤐

chen570075003 avatar Apr 26 '24 09:04 chen570075003

感谢大佬,导航栏高度问题已经解决。 同时发现新的问题,导航栏控制器内的子控制器 View 的 view.safeAreaLayoutGuide.topAnchor 会往上偏移5个点,发现有灵动岛设计的顶部安全高度会多出来5个点(来自文章:https://useyourloaf.com/blog/iphone-14-screen-sizes/ ) 设备:iPhone 15 Pro Max image

😷😷😷使用系统的 UI 调试了下,发现了个神奇的现象 image

navBar 的高度是 safeTop + navBarHeight = 103 但是控制器视图从 safeTop 的起始位置却仅为 97.667 image

结论: 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
    }

pengzishang avatar Jun 13 '24 01:06 pengzishang

那就是还要改回去?

Pircate avatar Jun 13 '24 02:06 Pircate