Android 和 iOS 上的 Nativescript translateY 不同
Nativescript translateY different on Android and iOS
我正在 Nativescript-Vue 中创建一个 BottonShet 组件。我遇到的问题如下:
使用 translateY 或动画上传帧在 iOS 和 Android 上表现不同。
我有一个组件:
在底部 sheet 我有一个 150 高的元素。如果我申请
frame.translateY = Screen.mainScreen.heightDIPs - 150
在android中达到了一个高点,在ios中达到了另一个高点。这里发生了什么?我怎样才能计算出一个高度,使所有手机从 150 到屏幕高度都一样?
在这个 documentation 中它说动画的转换是用 DIP 测量的,所以这应该适用于所有设备。
在 mentioned tutorial 中,它会根据平台应用一个高度或另一个高度,我不想要那个,我希望能够计算所以我不必是在所有设备上测试。
非常感谢。
我最近 运行 解决了这个问题,我所做的是获取 activity 内容高度并将其用于我的计算,所以现在我可以 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;
}
我正在 Nativescript-Vue 中创建一个 BottonShet 组件。我遇到的问题如下:
使用 translateY 或动画上传帧在 iOS 和 Android 上表现不同。
我有一个组件:
在底部 sheet 我有一个 150 高的元素。如果我申请
frame.translateY = Screen.mainScreen.heightDIPs - 150
在android中达到了一个高点,在ios中达到了另一个高点。这里发生了什么?我怎样才能计算出一个高度,使所有手机从 150 到屏幕高度都一样?
在这个 documentation 中它说动画的转换是用 DIP 测量的,所以这应该适用于所有设备。
在 mentioned tutorial 中,它会根据平台应用一个高度或另一个高度,我不想要那个,我希望能够计算所以我不必是在所有设备上测试。
非常感谢。
我最近 运行 解决了这个问题,我所做的是获取 activity 内容高度并将其用于我的计算,所以现在我可以 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;
}