使用wx.openEmbeddedMiniProgram打开半屏小程序时,自定义导航栏 statusBarHeight 为0,没有任何问题,关键是切换为全屏小程序时,自定义导航头的高度缺少 statusBarHeight,高度被压缩变形,导致整个页面样式异常,影响相关功能:例如吸顶等。
自定义导航栏高度是由状态栏高度+胶囊高度+胶囊边距组成的自定义导航栏高度。其中状态栏高度在半屏的情况下为 0,全屏正常。优先打开全屏,则半屏高度异常,优先打开半屏,则全屏高度异常,自定义导航栏高度在不同的屏幕下高度无法同步。
你的导航栏应该是一个自定义组件吧?骚一点的做法可以是注册一个事件,如果wx.getEnterOptionsSync拿到apiCategory已经发生变化,这时候发送一个事件,自定义导航栏那边接收然后更新高度
声明全局变量`apiCategory`为`null`,`app.onLaunch`时赋值`apiCategory`,`app.onShow`时再赋值,确保冷启动、热启动都能给`apiCategory`赋值。然后监听`apiCategory`,发生变化时调用`wx.getWindowInfo`获取窗口信息,这样可行否?
另外可关注下 [wx.onApiCategoryChange](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.onApiCategoryChange.html)这个新接口,2.33.0+可用来监听`apiCategory`的变化
【截图一】通过A小程序以半屏模式打开B小程序;
【截图二】再点击B小程序右上角圆圈退出(返回至A小程序),然后通过A小程序以全屏模式跳转至B小程序。胶囊按钮消失为微信客户端的BUG
核心问题是因为一个子进程中,自定义导航栏的高度是已经加载好的,如果通过wx.getEnterOptionsSync()来获取apiCategory再修改,需要深入到对应的页面逐一处理。
1.这个 Path 不是标准 Path,缺少一个 `/`。
2.使用这个 Path reLaunc 没用,组件竟然完全没更新,数据我看了没问题,有点奇怪。