【问题标题】:How do I apply independent HeaderStyleInterpolators in react-navigation?如何在反应导航中应用独立的 HeaderStyleInterpolators?
【发布时间】:2020-05-03 15:22:31
【问题描述】:

使用 react-navigation-stack 1.10.3,应用 'uikit' 的 headerTransitionPreset 将标题标题从左到右转换,同时淡入/淡出 headerRight 或 headerLeft 中的任何元素。

在 react-navigation-stack 2.0.15 中,不推荐使用此转换,而支持使用 headerStyleInterpolator.forUIKit,但该转换普遍适用于整个标题,而不仅仅是标题。

如何在 1.10.X 和 2.0.X 上复制以前的行为,我可以在 headerRight 和 headerLeft 上使用 forFade?​​p>

2.0.15 上的示例:

1.10.3 上的示例:

主要问题是在返回堆栈时删除淡入淡出动画,并用从左到右的过渡替换它。

【问题讨论】:

    标签: react-native react-navigation expo react-navigation-stack


    【解决方案1】:

    forUIKit 样式模仿原生 iOS 行为。如果您不想要相同的行为,您可以改用自定义样式插值器。

    如果您想保留与 forUIKit 相同的插值器,但想要淡化左右按钮而不是默认转换,您可以使用以下内容覆盖这些样式:

    function forCustomHeaderAnimation(options) {
      const { progress } = options.current;
      const styles = HeaderStyleInterpolators.forUIKit(options);
    
      return {
        ...styles,
        leftButtonStyle: { opacity: progress },
        leftLabelStyle: {},
        rightButtonStyle: { opacity: progress },
      };
    }
    
    // ...
    
    static navigationOptions = {
      headerStyleInterpolator: forCustomHeaderAnimation
    }
    

    来源:https://github.com/react-navigation/navigation-ex/blob/2243b45cc1addf83727166d82736d214f181b1fb/packages/stack/src/TransitionConfigs/HeaderStyleInterpolators.tsx

    【讨论】:

    • 我在 2.0.15 和 1.10.3 上添加了 UIKit 动画的示例。我觉得2.0.15可能有bug?
    • 我刚刚发布了一个如何覆盖部分动画的示例。您需要对其进行调整以实现您想要的行为。
    • 上述解决方案仍然无法解决问题,但我会继续使用它。感谢您花时间回答!
    • 看起来这里的实际问题是,即使淡入淡出动画仍在右侧按钮上发生,无论share.getcloudapp.com/ApuOWBg1,背景颜色的从左到右转换仍然发生这就是让它看起来如此刺耳的原因
    • 如果您还想要背景上的淡入淡出动画,您可以覆盖它以使用opacity,而不是像我在示例中对左键和右键所做的翻译。这是动画的原始代码。您可以根据需要覆盖其中的一部分github.com/react-navigation/navigation-ex/blob/…
    猜你喜欢
    • 1970-01-01
    • 2020-10-23
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多