选择时,旋转的 TouchableOpacity 在 Android 上崩溃

Rotated TouchableOpacity crashes on Android when selected

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

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

它在 iOS 上工作正常,但在 Android 上崩溃(请参阅下面的测试版本):

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Double

我无法在 rotate 上放置 Double,因为我遇到 不变量违规。我能做什么?


环境:

软件包:(需要 => 已安装)

测试于:

Direct reference to this issue on Github

有条件地将弧度与 Platform 一起使用,它们将无错误地转换为双精度:

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

这样就可以正常显示了。

但是,旋转的 TouchableOpacity 顺便失去了它的可触摸行为。

要解决此问题,请使用子视图在 :

上应用旋转
<TouchableOpacity onPress={…}>
  <View style={styles.yourRotation}>
     …
  </View>
</TouchableOpacity>

神奇答案 您可以旋转 View 而不是 TouchableOpacity。分别更改相同的宽度和高度

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