Skip to content

iOS 配置 ​

本页适用于没有使用 Expo config plugin 的 React Native CLI 项目。

工作方式 ​

  1. iOS 在进程启动时渲染 UILaunchStoryboardName 指定的静态 storyboard。
  2. React Native 启动后,RNSplashScreen.show() 从同一个 storyboard 创建原生覆盖层。
  3. 首屏准备完成后,JavaScript 调用 SplashScreen.hide() 移除覆盖层。

系统 Launch Screen 本身不能执行动画。所有隐藏动画都发生在 App 已经启动后的原生覆盖层上。

安装 Pods ​

bash
cd ios
pod install
cd ..

之后使用 .xcworkspace 打开项目。

配置 storyboard ​

  1. 将启动图加入 Assets.xcassets 并确认属于当前 App target。
  2. 新建或打开 LaunchScreen.storyboard。
  3. 设置 View 背景色并添加 Image View。
  4. 居中 Logo 使用中心约束和固定宽高;全屏图片约束到四边并使用 Aspect Fill。
  5. 在 target 的 General > App Icons and Launch Screen 中把 Launch Screen File 设为 LaunchScreen。

手动维护 Info.plist 时确认:

xml
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>

添加原生调用 ​

Swift AppDelegate 引入模块,并在 React Native 启动之后、启动方法返回之前调用:

swift
import rnsplashscreen

factory.startReactNative(
  withModuleName: "YourApp",
  in: window,
  launchOptions: launchOptions
)

RNSplashScreen.show()
return true

Objective-C 或 Objective-C++:

objc
#import <rnsplashscreen/RNSplashScreen.h>

// 在 application:didFinishLaunchingWithOptions: 返回之前
[RNSplashScreen show];
return YES;

最长等待时间 ​

覆盖层默认最多等待 JavaScript 10 秒。需要修改时,在 Info.plist 中设置非负秒数:

xml
<key>RNSplashScreenMaxWaitTime</key>
<real>15</real>

这个兜底用于避免 JavaScript 异常时启动屏永远遮挡 UI,不应代替正确的首屏状态管理。

iOS 缓存 ​

iOS 会缓存系统启动画面。图片或 storyboard 修改后没有生效时:

  1. 从模拟器或真机删除已安装的 App。
  2. 在 Xcode 中清理构建目录。
  3. 重新构建并安装 App。

只刷新 JavaScript 或覆盖安装不一定更新系统缓存。

无障碍动画 ​

用户开启“减弱动态效果”时,本包会跳过隐藏动画并直接移除覆盖层。不要依赖启动动画传达必须阅读的信息或关键状态。

Released under the MIT License.