Animation 我是否可以让您对本机';在用户未直接按下开关组件时,是否在更改其状态时将其切换为动画?

Animation 我是否可以让您对本机';在用户未直接按下开关组件时,是否在更改其状态时将其切换为动画?,animation,react-native,react-native-component,Animation,React Native,React Native Component,在我的React原生项目中,我使用的是Switch组件。它可以通过按直接切换,但我也想让用户通过按附近的相关项目来更改它 当按下时,它当然会为切换设置动画,但当我使用setState()更改其状态时,它会直接跳到另一个位置,而不显示动画 当从代码更改动画的状态时,是否有一种方法可以通过编程触发动画 (这似乎是一个不相关的问题,我不能完全解决。)取决于你采取的方法,但我认为你最好的选择是动画(这是React Native的一部分) 您可以这样做: render(){ var animVal

在我的React原生项目中,我使用的是Switch组件。它可以通过按直接切换,但我也想让用户通过按附近的相关项目来更改它

当按下时,它当然会为切换设置动画,但当我使用
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,我们还得出结论,没有简单的方法以编程方式设置开关动画。