gpt4 book ai didi

ios - 使用 UIScreen.main.bounds 作为 UIWindow 框架时 UINavigationBar 太低

转载 作者:行者123 更新时间:2023-11-29 05:51:11 25 4
gpt4 key购买 nike

我正在构建一个 iOS 应用程序,部署目标 12.1,swift 4.2。该应用程序使用容器 View ,并在主屏幕顶部有一个导航栏,最好位于状态栏下方。在启动屏幕 Storyboard中,我将 Navigation Bar.top 限制为 Safe.Area.Top。效果很好。但是,当我将 containerViewController 设置为 AppDelegate 中的 rootViewController 后,我在 Main.storyboard 中对其进行约束的导航栏(Navigation Bar.top 到 Safe.Area.Top)显示得远远低于应有的位置。

我能让导航栏出现在状态栏正下方的唯一方法是在 AppDelegate 中为我的窗口创建一个具有负 y 值的自定义框架 - 这绝对不是我满意的解决方案.

这似乎生成的 y 值太低:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
let containerViewController = ContainerViewController()
window!.rootViewController = containerViewController
window!.makeKeyAndVisible()
return true
}

这是一个令人震惊的黑客行为,使导航栏更接近它应该在的位置:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
//window = UIWindow(frame: UIScreen.main.bounds)
let hackedFrame = CGRect(x: 0, y: -44, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
window = UIWindow(frame: hackedFrame)
let containerViewController = ContainerViewController()
window!.rootViewController = containerViewController
window!.makeKeyAndVisible()
//window!.windowLevel = UIWindow.Level.statusBar
return true
}

屏幕抓取:

launchscreen, navbar correct

main screen post didFinishLaunchingWithOptions, navbar too low

我可能在这里遗漏了一些非常明显的东西,但我很感激任何人都可以提供的帮助。

谢谢。

最佳答案

在 iOS 11 中,苹果在导航栏中引入了大标题,这意味着如果拉动它可以拉伸(stretch)。您应该尝试设置

navigationItem.largeTitleDisplayMode = .never

在你的viewDidLoad中,并将导航栏的prefersLargeTitles设置为false

if #available(iOS 11.0, *) {
navigationItem.largeTitleDisplayMode = .always
navigationController?.navigationBar.prefersLargeTitles = true
}

关于ios - 使用 UIScreen.main.bounds 作为 UIWindow 框架时 UINavigationBar 太低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55658278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com