使用动画Titanium滚动隐藏导航栏

时间:2015-04-09 03:21:31

标签: javascript titanium scrollview navbar

某些应用(facebook,9gag)具有此功能。当用户向上滚动时,导航栏逐渐隐藏到消失的点。然后,当用户向下滚动时,navigationBar会逐渐显示自己(取决于滚动的速度)。

我们尝试通过调整滚动事件上导航视图的高度在 Titanium 上实现此功能,但它是滞后且非常慢的:

scrollView.addEventListener('touchstart',function(e){ 
        boolScroll=true;
});

scrollView.addEventListener('scroll',function(e){ 
    if(boolScroll){
        auxScroll=e.y;
        boolScroll=false;
    }
    var bh=bars.height;
    var sh=scrolls.height;

    if(auxScroll<e.y)//scrolling down
        if(bars.height>appHeight*0.08){
            bars.height=bh-appHeight*0.005; //rate for hiding
            if(scrolls.height<appHeight*0.7)
                scrolls.height=sh+appHeight*0.005;//same rate to increase the height of the scroll
        }

    if(auxScroll>e.y)//scrolling up
        if(bars.height<appHeight*0.08){
            bars.height=bh+appHeight*0.005; 
            if(scrolls.height>appHeight*0.7)
                scrolls.height=sh-appHeight*0.005;  
        }
});

我们也试过在视图上使用翻译动画,但仍然很慢。

this问题上有针对iOS的解决方案。任何帮助将不胜感激!

enter image description here

2 个答案:

答案 0 :(得分:1)

不知道你是否解决了这个问题,但我做了一个对我有用的技巧(至少对于导航栏) 这是片段:

self.addEventListener('scroll',function(e){
        if(e.contentOffset.y > 20) NavigationWindow.window.hideNavBar();
        if(e.contentOffset.y < 20) NavigationWindow.window.showNavBar();
    });

NavigationWindow是Ti.UI.iOS.createNavigationWindow的一个实例,self可以是tableview,view,scrollview或一个窗口(在我的例子中)

答案 1 :(得分:0)

这实际上是一个非常好的功能。 Appcelerator刚刚解决了这个问题,并且应该根据此票证在6.0版本上提供:https://jira.appcelerator.org/browse/TIMOB-23684