Note: check out Thuy's great subclass of UINavBar here:
https://mcmap.net/q/173512/-imitate-facebook-hide-show-expanding-contracting-navigation-bar
If you're working on this problem, GTScrollNavigationBar is close to a ready-made solution to the navBar problem!
For example: on a 2014 iPhone, open Safari, load any web page.
Look at the iOS toolbar at the bottom.
Now move your finger up and down ONLY A FEW PIXELS.
Basically the toolbar at the bottom, moves with your finger. Furthermore, the toolbar later appears/disappears as you scroll the page, following specific logic.
But the interaction rules are very complicated, and involve finger on/off during the hide, distance matching, gestures when you are further down the page, special cases for very short pages, and so on.
I want to EXACTLY duplicate the Apple behaviour.
(It seems sensible that we should match the Apple UX.)
Is there a way to do this? does Apple offer a one-step command for that, which I don't know about? Or do you have to laboriously duplicate the concept?
Thanks.
By the way, the following logic is reliable and will roughly duplicate the way Apple does it:
-(void)feedIsScrolled:(CGFloat)scrollNewOverallYPosition
{
// call this routine when scrollViewDidScroll:
self.feedIsScrolledDelta =
scrollNewOverallYPosition - self.feedIsScrolledPrevious;
self.feedIsScrolledPrevious =
scrollNewOverallYPosition;
// nb, you do those only in this routine, NOT the following routine.
if ( scrollNewOverallYPosition < 15.0 )
{
.. animate in the bar
return;
}
if ( self.feedIsScrolledDelta > 0.0 )
.. animate away the bar
}
-(void)feedIsThrown:(CGFloat)scrollNewOverallYPosition
{
// call this routine when scrollViewDidEndDragging:
// BUT ONLY when willDecelerate: is true
if ( self.feedIsScrolledDelta <= 0.0 )
.. animate in the bar
else
.. animate away the bar
}
By the way, of course you can use
(void)setToolbarHidden:(BOOL)hidden animated:(BOOL)animated
to slide a UIToolbar up and down. BUT that does not help in any way with "finger matching".
Note: and here for example is a superb solution seen on SO:
https://mcmap.net/q/173512/-imitate-facebook-hide-show-expanding-contracting-navigation-bar
You could program like that, implementing each and every rule in the Apple example, to suit your taste on each point. (What to do when you are near the bottom, finger up, which direction, etc etc.) My point is I just assumed someone must have done all that work already of matching the Apple UX exactly -- heh!
UIToolbar
or, in my case, aUINavigationBar
. I've implemented similar behavior for an app at work that hides a custom view as the user scrolls. The concept is actually pretty straightforward. It's just a matter of tuning it to your taste. – Pasteurizer