记发小程序中的坑
关于地图
- 地图的高度如果小于239.5px,开发者工具执行以下代码时并未生效
this.mapCtx.includePoints({
padding: [ 120, 50, 50, 50 ], // 参数ios需要4个值
points: this.data.points
})
- 苹果手机执行以上代码中的padding,需要给出四个值,不然点会出屏幕
- 如下图布局,在iOS手机上手在下方view层中不停的滑动,会造成地图的滑动,安卓则没有,很诡异!
解决方案是:在下方的view层中加catchtouchmove=“false"
<view catchtouchmove="false">
...
</view>
在开发者工具控制台会报警告,在iOS真机上完美避坑。
回退
不能传自定义参数,也不能监听
- 监听一般采用onUnload,但这个方法需回退之后才会触发,会闪一下上个页面
如果不想用这种效果,只能自定义导航,但是自定义导航也有弊端,就是要计算动态获取,而且页面中如果有定位也要对应计算。
一、获取胶囊按钮的布局位置信息,坐标信息以屏幕左上角为原点:
const menuButtonInfo = wx.getMenuButtonBoundingClientRect();
二、获取系统信息,里面有个参数:statusBarHeight(状态栏高度)
const systemInfo = wx.getSystemInfoSync();
计算公式:导航栏高度 = 状态栏高度 + 44。
- 传参
1.页面传参在onLoad可能获取其值,在onShow中获取不到。如果是tabBar页面,则可以wx.reLaunch,此方法会把所有栈清空,慎用!
2.找到栈中的路由,再执行相应路由页面的方法
3.在全局变量中设置参数,此方式需要额外对参数处理,如重置等。
应用场景:回退刷新等
tabBar
假设底部有三个tabBar页面:首页,订单,我的
- 当点击了订单,在路由栈中只有订单,首页没有了,如果这个时候回退会退出小程序
- 之前已经加载过tabBar页面,onLoad不会再执行
- tabBar页面,onUnload都不会执行
- scroll-view的scrolltolower事件有坑,如果当前已是最底部,然后快速上拉还是在最底部,该事件不会再触发,如果缓慢拉动是可以正常触发。
关于地图
上面是展示地图,下面是一个层显示一些内容,地图的高度不是100%占全屏,下方一块区域,在ios手机上手势在操作滑动会把地图拖动,安卓则不会。
解决方案是在下面的view层加一个属性
<view catchtouchmove="false">
...
</view>
此方法在开发工具控制台会报警告,在ios真机上就不会拖动地图了
(持续更新)