如何在StackNavigator中更改动画的方向?

当前行为

当用户转到另一个屏幕时,屏幕从bottom to top开始.

预期行为

当用户转到另一个屏幕时,屏幕从right to left开始.(比如Facebook或Instagram!)

StackNavigator代码

export default StackNavigator ({
    Main: {
        screen: MainScreen,
    },
    ...
}, {
    navigationOptions: ({navigation, screenProps}) => ({
        tabBarOnPress: blahblaj
    }),
    lazy: true
    // I guess we can do something here
});
  • 如果我们能设定动画时间,它会更好!目前,屏幕看起来像是从屏幕中间飞到顶部.我想要像Facebook或Instagram这样的自然动画:)

提前谢谢,

推荐答案

在iOS上,这是标准行为.Android需要一点配置.有两个选项可用于设置屏幕过渡:modetransitionConfig.在这种情况下,transitionConfig将起作用:

import CardStackStyleInterpolator from 'react-navigation/src/views/CardStack/CardStackStyleInterpolator';
// this path can be different depending on react-navigation version, this one is for @1.0.0-beta.15 

export default StackNavigator ({
    Main: {
        screen: MainScreen,
    },
        ...
}, {
   transitionConfig: () => ({
        screenInterpolator: CardStackStyleInterpolator.forHorizontal,
   }),
})

我们使用来自react-navigation 源的CardStackStyleInterpolator,但如果需要,您可以提供自定义转换,下面是如何生成oneherethis article.

mode表示默认行为:

export default StackNavigator ({
    Main: {
        screen: MainScreen,
    },
    ...
}, {
    mode: 'card',
    navigationOptions: ({navigation, screenProps}) => ({
        tabBarOnPress: blahblaj
    }),
    lazy: true
});

mode只能有两个值:

  • card-使用标准iOS(从右到左)和Android(从下到下)

  • modal-使屏幕从底部滑入,这是常见的问题

React-native相关问答推荐

GetStream:更改消息气泡背景

React onPress 立即执行(渲染时间),但是一旦用箭头函数替换它就不起作用

Eslint 错误,configuration for rule "import/no-cycle" is invalid

react-native (expo)加载markdown 文件

React - 类内的useContext

如何运行 React-Native 示例?

react-native 链接仅适用于一个项目(Android 或 iOS)

React Native 错误找不到模块metro-config/src/defaults/blacklist

错误:安装 react-native-elements 后无法识别字体系列 Material Design 图标?

NativeBase + Exponent Header

元素中缺少main.jsbundle、Foundation和Security,导致报错

我可以在 react-native 中使用 reactJS 库吗?

在配置 react-native-maps 中获取 "supportLibVersion" 、 "playServicesVersion" 和 "androidMapsUtilsVersion" 值

如何在 React Native 中按住以 Select 文本

如何将 Leaflet.js 与 react-native 一起使用

react-native fetch() cookie 持久化

更改按钮 colored颜色 onPress(切换功能)

Port 8081 already in use, packager is either not running or not running correctly Command /bin/sh failed with exit code 2

Gradlew bundleRelease 不会在 react-native 中生成发布 apk

React Native font outline / textShadow