Mostrar / ocultar a barra de ferramentas do UITool, “corresponder ao movimento dos dedos”, exatamente como por exemplo no iOS7 Safari

Nota: confira a excelente subclasse de Thuy do UINavBar aqui:

https://stackoverflow.com/a/20720359/294884

Se você está trabalhando nesse problema, o GTScrollNavigationBar está perto de uma solução pronta para o problema navBar!

Recompensa de 50 pontos aqui, incrível, não há respostas.

Por exemplo: em um iPhone de 2014, abra o Safari, carregue qualquer página da web.

Veja a barra de ferramentas do iOS na parte inferior.

Agora mova seu dedo para cima e para baixoAPENAS ALGUNS PIXELS.

Basicamente, a barra de ferramentas na parte inferior,se move com o dedo. Além disso, a barra de ferramentas posteriormenteaparece / desaparece à medida que você rola a página, seguindo lógica específica.

Mas as regras de interação sãomuito complicado, e envolva ligar / desligar o dedo durante a ocultação, correspondência de distância, gestos quando você estiver mais abaixo na página, casos especiais para páginas muito curtas e assim por diante.

eu queroEXATAMENTE duplicar o comportamento da Apple.

(Parece sensato que devemos corresponder ao Apple UX.)

Existe uma maneira de fazer isso? a Apple oferece um comando de uma etapa para isso, que eu não conheço? Ou você tem que duplicar laboriosamente o conceito?

Obrigado.

A propósito, a seguinte lógica é confiável e seráaproximadamente duplicado da maneira que a Apple faz:

-(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
}

A propósito, é claro que você pode usar

(void)setToolbarHidden:(BOOL)hidden animated:(BOOL)animated

para deslizar uma barra do UITool para cima e para baixo. MAS isso não ajuda em nada com a "correspondência de dedos".

Nota: e aqui, por exemplo, há uma excelente solução vista no SO:

https://stackoverflow.com/a/21049991/294884

Você pode programar assim, implementando todas as regras no exemplo da Apple, para se adequar ao seu gosto em cada ponto. (O que fazer quando você está perto do fundo, com o dedo para cima, em qual direção, etc.) Meu argumento é que presumi que alguém já deve ter feito todo esse trabalho.combinando exatamente com o Apple UX - heh!

questionAnswers(3)

yourAnswerToTheQuestion