uni-app IOS自定义调试基座使用自定义storyboard启动界面会一直停留在启动界面且打开出现短暂黑屏

发布于 1周前 作者 zlyuanteng 来自 Uni-App

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

1 回复

在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.mAppDelegate.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开发社区。

回到顶部