You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS App启动后UIWindow上下出现黑边问题排查求助

解决方案

1 检查Launch Screen配置

iOS会通过Launch Screen的适配规则判断App是否支持全面屏分辨率,配置错误会导致全局上下留黑边,操作步骤:

  • 打开Xcode项目设置,进入TARGETS → 你的App目标 → General选项卡
  • 找到「App Icons and Launch Images」区块,确认「Launch Screen File」选中了正确的Launch Screen故事板,不可留空
  • 不推荐使用旧版Launch Image资源集适配启动页,建议统一使用Launch Screen故事板

2 调整SwiftUI视图的安全区域适配

UIHostingController默认会预留安全区域边距,你可以给根SwiftUI视图添加全局安全区域忽略配置,修改HostingViewController代码如下:

class HostingViewController: UIHostingController<Text> {
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder, rootView: Text("text").edgesIgnoringSafeArea(.all))
    }
}

如果修改后黑边消失,可根据业务需求后续调整需要忽略的安全区域范围。

3 修正SceneDelegate的Window初始化逻辑

手动给Window设置UIScreen.main.bounds容易在多场景、分屏场景下出现尺寸适配错误,修改SceneDelegate代码如下:

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window : UIWindow?
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = scene as? UIWindowScene else { return }
        self.window = UIWindow(windowScene: windowScene)
        // 无需手动设置frame,UIKit会自动根据windowScene适配正确尺寸
        let vc = UIStoryboard(name: "Main", bundle: .main).instantiateInitialViewController()
        self.window!.rootViewController = vc
        self.window!.makeKeyAndVisible()
    }
}

4 检查Storyboard配置

打开Main.storyboard,选中入口的HostingViewController:

  • 进入属性检查器,确认「Presentation」设置为Full Screen
  • 进入尺寸检查器,确认「Simulated Metrics」下的Size为Inferred,不要设置为固定的旧机型尺寸
  • 确认没有给视图添加固定宽高的硬约束,避免视图无法撑满屏幕

内容的提问来源于stack exchange,提问作者Arthur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:45:04