小程序 wx.getSystemInfoSync 获取 windowHeight 问题
windowHeight
概念
可使用窗口高度,即:屏幕高度(screenHeight
) - 导航(tabbar
)高度
存在问题
安卓设备下获取 windowHeight
不能准确得到对应的高度,总是拿到屏幕高度
原因
1. 同步接口 wx.getSystemInfoSync
并不同步(猜测)
wx.getSystemInfoSync
只是在页面初始化时提前计算。所以对于 windowHeight
这种需要进行功能判断的属性,应该使用异步接口,实时获取
2. wx.getSystemInfo 调用的时机不当
上面讲了 windowHeight
的定义,所以这个值取决于 tabbar
是否存在
为了保证 tabbar
显示后再进行取值,建议在生命周期的 onReady
钩子中调用接口 wx.getSystemInfo
最终方案
- 采用异步接口
wx.getSystemInfo
- 在
onReady
中调用
代码
onReady() {
wx.getSystemInfo({
success({windowHeight}) {
// todo
}
});
}
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
· 记一次 C# 平台调用中因非托管 union 类型导致的内存访问越界
· [EF Core]聊聊“复合”属性
· 那些被推迟的 C# 14 特性及其背后的故事
· 我最喜欢的 C# 14 新特性
· 程序员究竟要不要写文章
· 我是不是很有钱?
· 遭遇疯狂 cc 攻击的一个周末
· 【EF Core】聊聊“复合”属性
· 美丽而脆弱的天体运动:当C#遇见宇宙混沌
· GPT‑5 重磅发布