旋转的可触摸不透明度在 Android 上崩溃时,选择



我旋转一个TouchableOpacity(没有任何动画(,如下所示:

transform: [
{ rotate: '45deg' }
]

它在iOS上运行良好,但在Android上崩溃(请参阅下面的测试版本(:

java.lang.ClassCastException: java.lang.String 不能强制转换为 java.lang.Double

我不能在rotate上放一个双精度,因为我得到了一个不变的违规。我能做什么?


环境:

  • 操作系统: macOS High Sierra 10.13.5
  • 节点:7.10.0
  • 纱线:1.9.4
  • NPM:4.2.0
  • 守望者:4.9.0
  • Xcode:Xcode 9.4.1 Build 版本 9F2000
  • 安卓工作室: 3.2 AI-181.5540.7.32.5014246

软件包:(想要 => 已安装(

反应: 16.3.1
  • => 16.3.1
  • 反应原生: 0.55.1
  • => 0.55.1

测试于:

  • iOS 12(在设备和模拟器上运行良好(
  • 安卓 7.0 和 8.1(设备和模拟器(

在 Github 上直接引用此问题

有条件地将弧度与Platform一起使用,它们将被转换为双精度而不会出错:

import {Platform} from 'react-native'
…
transform: [
{rotate: (Platform.OS === 'ios') ? '45deg' : (3.14159/4)+'rad'}
]

这将正常显示。

但是,顺便说一下,旋转的可触摸不透明度会失去其可触摸行为。

要解决此问题,请使用子视图将旋转应用于:

<TouchableOpacity onPress={…}>
<View style={styles.yourRotation}>
…
</View>
</TouchableOpacity>

魔术答案您可以旋转视图而不是可触摸不透明度。分别更改相同的宽度和高度

<TouchableOpacity  style={{  height: 100, width: 20 }} >
<View style={{  height: 20, width: 100, transform: [{ rotate: '90deg' }] }}>
<Text>PRESS</Text>
</View>
</TouchableOpacity>

相关内容

最新更新