You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为watchOS SwiftUI应用添加启动屏?

解决watchOS SwiftUI应用启动屏不显示的问题

你遇到的问题很常见——watchOS并不支持iOS的UILaunchScreen配置项,所以你在Info.plist里加的这段配置其实不会被watchOS系统识别。下面给你两种可行的解决方案,分别对应系统原生启动屏和自定义启动屏:

方法一:使用系统原生启动屏(Asset Catalog)

这是最符合watchOS规范的方式,系统会自动处理启动屏的显示时机:

  • 打开你的watchOS项目的Assets.xcassets文件
  • 右键点击空白区域,选择New Launch Image,Xcode会自动创建适配watchOS的启动图条目
  • 将你的Rupee图片拖入对应分辨率的槽位(Asset Catalog里会标注每个槽对应的Apple Watch型号,确保图片尺寸匹配)
  • 回到Info.plist,删除你添加的<key>UILaunchScreen</key>整个字典——watchOS不需要这个配置,Xcode会自动为Launch Image生成对应的plist配置

⚠️ 重要提醒:确保你的Rupee图片已经被添加到watchOS应用目标的资源列表里(在Xcode的File Inspector里勾选watchOS目标),很多人会不小心只把图片加到iOS目标里,导致watchOS找不到资源。

方法二:自定义SwiftUI启动屏(适合需要动态内容的场景)

如果需要更灵活的启动屏(比如添加文字、动画),可以手动在SwiftUI里实现:

首先修改你的App入口文件,先显示启动屏视图,延迟后切换到主视图:

@main
struct SampleWatchApp: App {
    @State private var isShowingSplash = true
    
    var body: some Scene {
        WindowGroup {
            Group {
                if isShowingSplash {
                    SplashScreen()
                        .onAppear {
                            // 模拟启动加载时间,可根据实际情况调整
                            DispatchQueue.main.asyncAfter(deadline: .now() + 1.2) {
                                withAnimation(.easeOut) {
                                    isShowingSplash = false
                                }
                            }
                        }
                } else {
                    MainView() // 替换成你的主视图
                }
            }
        }
    }
}

// 自定义启动屏视图
struct SplashScreen: View {
    var body: some View {
        ZStack {
            // 设置背景色,匹配你的应用风格
            Color(.systemBackground)
                .edgesIgnoringSafeArea(.all)
            
            Image("Rupee")
                .resizable()
                .scaledToFit()
                .frame(width: 70, height: 70)
                .shadow(radius: 4)
        }
    }
}

额外注意事项

  • watchOS应用启动速度通常很快,系统原生启动屏可能只会显示很短的时间,如果你的应用启动特别快,可能看起来像是没显示——可以在启动时加一点必要的初始化逻辑,让启动屏停留更久(但不要故意延迟,影响用户体验)
  • 图片名称要完全匹配,watchOS的资源名称是大小写敏感的,确保Rupee和Asset Catalog里的图片名称完全一致

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

火山引擎 最新活动