11
votes

Comment masquer la barre d'onglets lorsque vous faites glisser comme une application Safari?

Je veux savoir comment implémenter une animation qui cache la barre d'onglets lors de la glissant vers le bas, comme une application Safari sur iOS 7. Toute information de votre part sera appréciée.

Question similaire: Afficher / masquer Uitoolbar, "Match Mouvement", précisément comme dans l'exemple de Safari IOS7 .


3 commentaires

Essayez de chercher Custom Control comme ce que vous voulez sur Cocoacontrols.com/controls


Merci, je vérifie cela maintenant. Cocoacontrols.com/Search?utf8=%E2%9C%93&q= Tabar


S'il vous plaît, alors votre code.


6 Réponses :


18
votes

quelque chose comme ça devrait fonctionner. Je ne sais pas si cela donne exactement le même aspect que l'application Safari, mais il est proche: xxx


6 commentaires

Merci! Ça marche! Vous et ce site ci-dessous m'a beaucoup aidé. développeurs-life.com/...


J'ai besoin de même effet.Mais si c'est utablevoir comment puis-je atteindre cela? Besoin de masquer et d'afficher la barre de navigation et la barre d'outils


UitailView étend Uiscrollview afin que vous puissiez utiliser la même méthode que ci-dessus.


Logiquement, cela a du sens. Mais je ne suis pas capable de le faire fonctionner. Le cadre de barre d'onglets est toujours: {{0, 0}, {0, 0}}. Quelqu'un d'autre a-t-il rencontré cela?


@rdelmar ne fonctionne pas complètement comme Safari, tandis que la diminution de Yoffset après augmenté à cette époque, l'onglet devrait apparaître.


Je pense que ce n'est pas la façon dont cela fonctionne dans Safari; Plus précisément, la barre d'onglets ne vous apparaît plus que lorsque vous faites défiler vers le haut de la visionneuse ScrollView?



8
votes

La réponse acceptée ne fonctionne pas lorsque vous avez beaucoup de cellules dans une vue de table - la barre d'onglets ne montre que si vous faites défiler tout le chemin vers le haut.

Je l'ai amélioré comme ceci: xxx


3 commentaires

Ceci est extrêmement glitchy à la recherche d'écran.


Fonctionne parfaitement pour moi! Bien que je n'ai pas vraiment besoin du bit ScrollViewWillenddragging


Pour moi ça a fonctionné bien. Cela devrait être la réponse acceptée.



3
votes

Honnêtement, j'ai essayé toutes ces solutions et ils n'étaient pas assez robustes pour moi. Ils cachent la barre d'onglets quand il aurait dû apparaître, ou ils ont déplacé la barre d'onglets de manière étrange.

J'ai fini par passer toute la journée à essayer de les amener à travailler. J'ai finalement abandonné et utilisé: https://github.com/tristanhimman/hidingnavigationbar .

Cela m'a donné la fonctionnalité de cacher la barre NAV et la barre d'onglets (ce que je voulais vraiment en premier lieu). Cela fonctionne extrêmement bien et je l'ai mis en 10 minutes.

J'espère que cela aide quelqu'un d'autre à ne pas perdre une journée de codage à ceci: -0.


0 commentaires


1
votes

Vous pouvez utiliser une variable pour conserver la valeur de ContempleToffset. L'idée de clé est une barre d'onglets d'origine.y varie entre CGRectGetMaxy (scénario) et CGRectGetMaxy (scénario) - CGRRRECTEGETHEIGHT (TABBARRECT).

Cela fonctionne bien dans mon projet. xxx


0 commentaires

0
votes
    CGRect frame = self.tabBarController.tabBar.frame;
    CGFloat delta = navBarOriginY - self.navigationController.navigationBar.layer.presentationLayer.frame.origin.y;
    frame.origin.y = self.minTabBarY + delta;
    [self setFrameForTabBar:frame animationDuration:0.0];
} } }

- (void)setFrameForTabBar:(CGRect)frame animationDuration:(CGFloat)duration {
dispatch_async(dispatch_get_main_queue(), ^{
    [UIView animateWithDuration:duration delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{
        self.tabBarController.tabBar.frame = frame;
    } completion:^(BOOL finished) {}];
});

0 commentaires