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;
  }