平台就绪中的离子闪屏 hide() 方法不起作用

Posted

技术标签:

【中文标题】平台就绪中的离子闪屏 hide() 方法不起作用【英文标题】:Ionic splashscreen hide() method in platform ready doesn't work 【发布时间】:2020-09-10 22:10:02 【问题描述】:

平台准备就绪后,我无法隐藏启动画面。这仅在 ios 上是问题,仅在 testflight 应用程序上。我无法在本地使用cordova 10 构建它。当我使用 cordova 9 构建本地应用程序时(这是唯一的区别),此方法有效。

this.platform.ready().then(() => 
   this.splashscreen.hide()
);

我确定所有导入都ok,都安装好了。

package.json: "cordova-ios": "^6.1.0", "cordova-plugin-splashscreen": "^6.0.0",

config.xml - 初始屏幕值

<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="1000" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="AutoHideSplashScreen" value="false" />
<preference name="loadUrlTimeoutValue" value="700000" />
<preference name="SplashScreenDelay" value="30000" />
<preference name="DisallowOverscroll" value="true" />
<preference name="FadeSplashScreen" value="false" />

有人知道吗?我试过添加setTimout,它不起作用。

【问题讨论】:

【参考方案1】:

我们遇到了同样的问题。在 cordova-ios@6.x 他们pulled the splashscreen plugin into the platform itself。这也可以在最新文档的Supported Platforms 中看到。

我们发现对.hide() 的调用似乎在SplashScreenDelay 之后触发了隐藏。因此,如果您摆脱了 SplashScreenDelay 设置,我敢打赌,您对 Hide() 的调用将按您的预期开始工作(因为您已经将 AutoHideSplashScreen 设置为 false)。

如果您像我一样,想要自动隐藏功能和手动调用隐藏功能,您可以考虑在计时器中触发 .hide(),这将作为备用计划触发(以防您的其他.hide() 不会触发)。两次调用.hide() 似乎没有负面影响。

    //Poor-man's Auto-Hide
    Observable.timer(15000).subscribe(()=>
        this.splashScreen.hide();
    );

【讨论】:

以上是关于平台就绪中的离子闪屏 hide() 方法不起作用的主要内容,如果未能解决你的问题,请参考以下文章

离子 3 中的阵列推入不起作用

JQuery .show() 方法在 .hide 之后不起作用

iPhone X 中的双离子闪屏

离子闪屏不可见

Hide()方法不生效

离子闪屏配置和背景