3

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

它当然会在按下时为切换设置动画,但是当我使用它更改其状态时,setState()它只是直接跳到另一个位置而没有动画。

有没有一种方法可以在从代码更改其状态时以编程方式触发动画?

(有一个类似措辞的问题,但似乎是一个我无法解决的无关问题。)

4

1 回答 1

-1

取决于您采用的方法,但我想说最好的选择是使用 Animated(它是 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>
    );

有关更多信息,请参阅文档https://facebook.github.io/react-native/docs/animated.html

于 2017-09-25T19:40:23.950 回答