如何在Xcode中设置Launch Screen启动屏的展示时长
iOS调整Launch Screen启动屏展示时长的实现方案
iOS系统的Launch Screen本身没有公开API支持直接设置固定展示时长,它默认会在App启动初始化完成、主线程就绪后自动消失。要延长展示时长,可通过以下两种方案实现:
方案1:主线程睡眠(快速实现,不推荐)
在App启动初始化的回调方法中主动阻塞主线程指定时间,即可延长启动屏展示时间:
- 纯UIKit无SceneDelegate的项目:在
AppDelegate.m/AppDelegate.swift的application:didFinishLaunchingWithOptions:方法最开头添加睡眠代码:// Swift示例,数字为要延长的秒数,建议不超过3秒 Thread.sleep(forTimeInterval: 2)// Objective-C示例 [NSThread sleepForTimeInterval:2]; - 带SceneDelegate的项目:在
SceneDelegate.swift的scene:willConnectToSession:options:方法最开头添加上述睡眠代码即可。
该方案优点是实现成本极低,缺点是会阻塞主线程,可能导致App启动阶段无响应,时长超过3秒有被苹果审核拒绝的风险,仅适合本地调试时临时使用。
方案2:自定义启动屏过渡层(生产环境推荐)
通过添加和系统Launch Screen视觉完全一致的自定义覆盖层,自主控制展示时长,无性能问题也不会触发审核风险:
- 新建一个和
Launch Screen.storyboard布局、素材完全一致的控制器或视图,保证不同设备尺寸下的展示效果和系统启动屏完全相同,避免跳转闪烁。 - 在App启动完成、系统Launch Screen即将消失的节点,将自定义的启动屏视图添加到当前window的最顶层,覆盖住主业务界面。
- 通过GCD延时任务控制视图移除时机,示例代码:
// Swift示例,延时2秒后移除自定义启动层 DispatchQueue.main.asyncAfter(deadline: .now() + 2) { self.customLaunchView.removeFromSuperview() // 后续可添加自定义淡出等过渡动画提升体验 }
该方案不阻塞主线程,支持自定义过渡动画、可灵活调整展示时长,是生产环境的首选实现方式。
注意事项
- 不要将启动屏总展示时长设置超过3秒,不符合苹果的用户体验规范,容易触发审核拒绝。
- 使用自定义覆盖层方案时,要做好横竖屏、不同分辨率设备的适配,保证和系统Launch Screen的展示效果完全一致,避免出现视觉跳变。
- SwiftUI项目可直接在根视图上添加启动屏覆盖层,在
onAppear回调中触发延时移除逻辑即可。
内容的提问来源于stack exchange,提问作者Sophia Guelfi
相关产品推荐
相关产品推荐

