uni-app IOS自定义调试基座使用自定义storyboard启动界面会一直停留在启动界面且打开出现短暂黑屏
uni-app IOS自定义调试基座使用自定义storyboard启动界面会一直停留在启动界面且打开出现短暂黑屏
测试过的手机:
- iPadOs 15.8.3
操作步骤:
- 使用自定义storyboard启动界面 并 打包自定义基座
预期结果:
- 不会出现短暂黑屏并正常执行
实际结果:
- 一直停留在启动界面,并且不会执行任何uni跳转路由方法和plus.navigator.closeSplashscreen()
bug描述:
- IOS自定义调试基座 使用 自定义storyboard启动界面 会一直停留在启动界面并且打开会出现短暂黑屏
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | Windows 11 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.28 |
手机系统 | 全部 |
手机厂商 | 苹果 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
在uni-app开发中,如果遇到使用自定义storyboard启动界面在iOS上导致应用一直停留在启动界面,并伴随短暂黑屏的问题,这通常是由于启动流程或storyboard配置不当导致的。下面提供一个基本的代码和配置示例,帮助你定位和解决问题。
步骤 1: 配置Info.plist
首先,确保你的Info.plist
文件中正确配置了启动界面的storyboard名称。例如,如果你的storyboard文件名是LaunchScreen.storyboard
,则Info.plist
中应包含以下配置:
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
步骤 2: 检查Storyboard配置
打开LaunchScreen.storyboard
,确保里面只有一个UIViewController
,并且这个控制器的视图层级简单明了,没有复杂的动画或延迟加载的代码。通常,启动屏幕应该尽可能简单,只显示静态图像或简单的UI元素。
步骤 3: 检查AppDelegate配置
在AppDelegate.m
或AppDelegate.swift
中,确保没有代码阻止了正常的启动流程。对于Objective-C:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 通常这里不会放置阻塞启动的代码
return YES;
}
对于Swift:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 通常这里不会放置阻塞启动的代码
return true
}
步骤 4: 调试启动流程
如果以上步骤都确认无误,尝试在Xcode中运行应用,并使用断点调试AppDelegate
中的方法,查看是否有方法被意外调用或阻塞了主线程。特别是检查didFinishLaunchingWithOptions
方法之后的任何启动逻辑。
步骤 5: 清理和重建
有时候,Xcode的缓存可能会导致一些奇怪的问题。尝试清理项目(Product
-> Clean Build Folder
)并重新构建。
示例代码结构
假设你的LaunchScreen.storyboard
只包含一个UIImageView
显示一个图片,确保图片资源已被正确添加到Xcode项目中,并且在storyboard中正确引用。
<!-- LaunchScreen.storyboard -->
<viewController id="01J-lp-oVM" customClass="UIViewController" sceneMemberID="viewController">
<view key="view" id="Ze5-6b-2t3">
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="D4W-87-y6T">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<constraints>
<constraint firstAttribute="width" constant="375" id="Hoa-74-E5K"/>
<constraint firstAttribute="height" constant="667" id="K6c-5h-X5x"/>
</constraints>
</imageView>
</subviews>
</view>
</viewController>
确保这些配置正确无误,通常可以解决启动界面停留或黑屏的问题。如果问题依旧,可能需要更深入地检查应用的启动逻辑或咨询更具体的iOS开发社区。