我的应用程序具有静态标头。这意味着在所有视图中它都保持不变。
问题是,当我使用<ion-nav-bar>指令时,每当视图更改时,标题就会动画化。
在IOS上,这并不是很糟糕,因为整个过程都在滑行,但是在Android上,它似乎会闪烁。

如何完全禁用动画?
我已经尝试在$ionicConfigProvider.navBar.transition('none');部分中使用app.config,但实际上使情况变得更糟(在IOS上也闪烁)。

我创建了一个简单的codepen(默认过渡似乎是IOS的过渡,但是如果您在chrome上打开开发者控制台并更改为android设备,则会看到闪烁)。

最佳答案

如果您真的不知道如何解决这个问题。

您可以修改过渡功能

首先,在app.config部分

$ionicConfigProvider.navBar.transition('android');


然后,修改离子跃迁函数

$ionicConfigProvider.transitions.navBar.android = function(enteringHeaderBar, leavingHeaderBar, direction, shouldAnimate) {
    function setStyles(ctrl, opacity) {
        if (!ctrl) return;
        var css = {};
        // ionic original
        // css.opacity = opacity === 1 ? '' : opacity;

        // modify
        if (opacity === 1) {
            css.opacity = '';
            css.display = '';
        } else {
            css.opacity = opacity;
            css.display = 'none'; // let leavingHeaderBar immediately disappear
        }

        ctrl.setCss('buttons-left', css);
        ctrl.setCss('buttons-right', css);
        ctrl.setCss('back-button', css);
        ctrl.setCss('back-text', css);
        ctrl.setCss('title', css);
    }

    return {
        run: function(step) {
            setStyles(enteringHeaderBar.controller(), step);
            setStyles(leavingHeaderBar && leavingHeaderBar.controller(), 1 - step);
        },
        shouldAnimate: shouldAnimate && (direction == 'forward' || direction == 'back')
    };
};

07-28 03:54
查看更多