【发布时间】:2019-04-17 17:08:12
【问题描述】:
我正在开发一个使用 React Navigation 的 React Native 应用程序 管理屏幕之间的路由。
我知道在 Egghead.io 上阅读 React Navigation documentation 和观看 this video(强烈建议),可以为将 transitionConfig 属性传递给 StackNavigator 的屏幕之间的转换定义自定义动画。
例如,下面的代码定义了一个向左滑动动画,它基本上是iOS默认推送动画的镜像:
const TransitionConfig = () => ({
screenInterpolator: ({ layout, position, scene }) => {
const { index } = scene
const { initWidth } = layout
const translateX = position.interpolate({
inputRange: [index - 1, index, index + 1],
outputRange: [-initWidth, 0, 0],
})
return {
transform: [{ translateX }],
}
}
})
const MyNavigator = createStackNavigator(
{
A: {screen: ScreenA},
B: {screen: ScreenB},
},
{ transitionConfig: TransitionConfig }
)
考虑到上面的代码和我们从屏幕A 导航到屏幕B 的事实,screenInterpolator 函数体基本上描述了屏幕B 应该跟随的动画它何时会出现 (消失时恢复原状)。在这种情况下,代码将屏幕B 沿X 轴平移以实现滑入 效果。
是否也可以为正在消失的屏幕(在我们的例子中为屏幕A)定义动画?我想定义这样的东西:
-
B应该出现从左向右滑动 -
A应该消失从上到下滑动
【问题讨论】:
标签: reactjs react-native react-navigation