微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nativescript translateY 在 Android 和 iOS 上有所不同

如何解决Nativescript translateY 在 Android 和 iOS 上有所不同

我正在 Nativescript-Vue 中创建一个 BottonShet 组件。我遇到的问题如下:

使用 translateY 或动画上传帧在 iOS 和 Android 上的行为不同。

我有一个组件:

在底片中,我有一个 150 高的元素。如果我申请

frame.translateY = Screen.mainScreen.heightDIPs - 150

在android中它达到了一个高点,而在ios中它达到了另一个高点。这里发生了什么?如何计算高度,使其在 150 和屏幕高度的所有手机中都相同?

enter image description here

在此 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 举报,一经查实,本站将立刻删除。