无论是首次进入小程序,还是从其他页面跳转至目标页触发的onShow中,调用wx.setBackgroundColor设置backgroundColorTop都有大概率无效,也不会触发wx.setBackgroundColor的fail回调。
例外的是,如果先将微信切至后台,再切至前台,导致页面触发onShow,就不存在这种问题。
经过测试:
在onShow中console.log()表明该生命周期是始终触发的,所以是wx.setBackgroundColor方法的问题。
使用setTimeout延迟调用wx.setBackgroundColor不能解决。
同样的时机,调用wx.setNavigationBarTitle或wx.setNavigationBarColor并没有问题。
看图,注意下拉刷新时的backgroundColorTop
(这里演示的是微信切至后台,再切至前台触发onShow,wx.setBackgroundColor才生效,此图中的导航栏颜色和标题都是在onShow时调用相应方法设置的,唯独wx.setBackgroundColor无效)
ps: 我知道可以在json里设置,但需求是这些颜色是可以动态设置的,所以需要使用wx.setBackgroundColor