如何解决Nativescript translateY 在 Android 和 iOS 上有所不同
我正在 Nativescript-Vue 中创建一个 BottonShet 组件。我遇到的问题如下:
使用 translateY 或动画上传帧在 iOS 和 Android 上的行为不同。
frame.translateY = Screen.mainScreen.heightDIPs - 150
在android中它达到了一个高点,而在ios中它达到了另一个高点。这里发生了什么?如何计算高度,使其在 150 和屏幕高度的所有手机中都相同?
在此 documentation 中,它表示动画的转换是以 DIP 来衡量的,因此这应该适用于所有设备。
在 mentioned tutorial 中,如果根据平台应用一个或另一个高度,我不想要那个,我希望能够计算所以我不必测试所有设备。
非常感谢。
解决方法
我最近遇到了这个问题,我所做的是获取活动内容高度并将其用于我的计算,所以现在我可以执行 frame.translateY = activityHeight - 150
get activityHeight(): number {
if(isIOS){
return Screen.mainScreen.heightDIPs;
}
const activity = Application.android.foregroundActivity || Application.android.startActivity;
if(!activity) return 0;
const rootView = activity.findViewById(android.R.id.content);
if(!rootView) return 0;
return rootView.getHeight() / Screen.mainScreen.scale || 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。