React Native: как вы анимируете вращение изображения?
вращение-это преобразование стиля, и в RN вы можете вращать такие вещи, как это
render() {
return (
<View style={{transform:[{rotate: '10 deg'}]}}>
<Image source={require('./logo.png')} />
</View>
);
}
однако, чтобы оживить вещи в RN, вы должны использовать числа, а не строки. Можете ли вы все еще анимировать преобразования в RN или мне нужно придумать какой-то спрайт-лист и изменить изображение src на некоторых fps?
2 ответов
вы можете фактически анимировать строки, используя interpolate
метод. interpolate
принимает диапазон значений, обычно от 0 до 1 хорошо работает для большинства вещей, и интерполирует их в диапазон значений (это могут быть строки, числа, даже функции, возвращающие значение).
что бы вы сделали, это взять существующее анимированное значение и передать его через функцию интерполяции следующим образом:
spinValue = new Animated.Value(0)
// First set up animation
Animated.timing(
this.spinValue,
{
toValue: 1,
duration: 3000,
easing: Easing.linear
}
).start()
// Second interpolate beginning and end values (in this case 0 and 1)
const spin = this.spinValue.interpolate({
inputRange: [0, 1],
outputRange: ['0deg', '360deg']
})
затем используйте его в своем компоненте следующим образом:
<Animated.Image
style={{transform: [{rotate: spin}] }}
source={{uri: 'somesource.png'}} />
к сожалению, недостаточно репутации, чтобы прокомментировать выше.
очень хороший пример. Не забудьте добавить свойство useNativeDriver чтобы гарантировать, что вы получите лучшую производительность из этой анимации:
// First set up animation
Animated.timing(
this.state.spinValue,
{
toValue: 1,
duration: 3000,
easing: Easing.linear,
useNativeDriver: true
}
).start();