Animation 我是否可以让您对本机';在用户未直接按下开关组件时,是否在更改其状态时将其切换为动画?
在我的React原生项目中,我使用的是Switch组件。它可以通过按直接切换,但我也想让用户通过按附近的相关项目来更改它 当按下时,它当然会为切换设置动画,但当我使用Animation 我是否可以让您对本机';在用户未直接按下开关组件时,是否在更改其状态时将其切换为动画?,animation,react-native,react-native-component,Animation,React Native,React Native Component,在我的React原生项目中,我使用的是Switch组件。它可以通过按直接切换,但我也想让用户通过按附近的相关项目来更改它 当按下时,它当然会为切换设置动画,但当我使用setState()更改其状态时,它会直接跳到另一个位置,而不显示动画 当从代码更改动画的状态时,是否有一种方法可以通过编程触发动画 (这似乎是一个不相关的问题,我不能完全解决。)取决于你采取的方法,但我认为你最好的选择是动画(这是React Native的一部分) 您可以这样做: render(){ var animVal
setState()
更改其状态时,它会直接跳到另一个位置,而不显示动画
当从代码更改动画的状态时,是否有一种方法可以通过编程触发动画
(这似乎是一个不相关的问题,我不能完全解决。)取决于你采取的方法,但我认为你最好的选择是动画(这是React Native的一部分) 您可以这样做:
render(){
var animVal = new Animated.Value(0);
Animated.timing(animVal, {toValue: 1, duration: 300}).start();
var animatedViewStyles =
{
marginLeft: animVal.interpolate({
inputRange: [0, 1],
outputRange: this.state.switchOn ? [100, 0] : [0, 100],
}),
// add some other styles here
color: 'green'
};
}
return (
<Animated.View style={animatedViewStyles}>
<TouchableHighlight onPress(() => this.setState({switchOn: !this.state.switchOn}))><Text>This is my switch</Text></TouchableHighlight>
</Animated.View>
);
render(){
var animVal=新的动画值(0);
time(animVal,{toValue:1,duration:300}).start();
var animatedViewStyles=
{
marginLeft:animVal.interpolate({
输入范围:[0,1],
outputRange:this.state.switch?[100,0]:[01100],
}),
//在这里添加一些其他样式
颜色:“绿色”
};
}
返回(
更多信息。不,你是对的-我不知道你在使用切换组件,我以为你已经创建了自己的组件。(这可能更容易添加动画!)不,本机切换组件已经有动画了。我只是不知道是否有办法通过编程触发动画。我想没有)-:是的,我完全误解了。它在引擎盖下使用UISwitch(),这确实支持它,但看起来没有明确的链接设置。RN交换机的源代码在这里-它使用了RCTSwitch,这是UISwitch上的一个包装器,但我不确定是否有一种方法可以触发您需要的UISwitch上的函数。是的,我查看了包装iOS或Android的代码,但我也没有直接编码,所以没有完全理解,但我得出了与您相同的结论。谢谢@hippietrail FWIW,我们还得出结论,没有简单的方法以编程方式设置开关动画。