web-dev-qa-db-fra.com

Masquer les gros titres lors du défilement

J'ai un contrôleur de vue normal intégré à un contrôleur de navigation. Dans ce contrôleur de vue, j'ai une vue de table qui utilise les contraintes de la zone de sécurité. (Je n'utilise pas de contrôleur de vue de table)

Le contrôleur de navigation est configuré pour préférer les gros titres et le mode est toujours défini sur. En bêta 2 cela fonctionnait parfaitement, donc quand je suis arrivé dans le titre était grand et quand j'ai fait défiler vers le bas il est devenu petit (comme le normal) Mais depuis la beta 3, cela ne fonctionne plus.

Tout le monde sait comment réactiver ce paramètre ou comment le rendre plus petit lorsque je fais défiler la vue du tableau. Vous aimez le comportement de toutes les nouvelles applications iOS 11? 

Ou s'agit-il d'un bogue dans la version actuelle de Swift 4/iOS 11, mais les applications telles que Messenger et les paramètres fonctionnent toujours de cette manière.

Merci d'avance.

11
Jippe Joosten

Pour moi, c’est que si vous définissez le booléen "Préfère les gros titres" dans le storyboard sur true, il restera grand. Si vous activez ceci par code, cela fonctionnera comme prévu!

20
Jippe Joosten

J'ai trouvé une solution de contournement sur ce site En gros, si la tableView (ou l'élément avec scroll) n'est pas la première vue de votre hiérarchie, le titre de grande taille ne se cache pas automatiquement.

Exemple qui ne fonctionnera PASExemple qui fonctionnera

https://markusbodner.com/2017/10/08/fix-large-navigation-bar-title-not-hiding-on-scroll-in-ios-11/

J'ai ajouté sur la vue willAppear:

        if #available(iOS 11.0, *) {
        navigationController?.navigationBar.prefersLargeTitles = true
    } else {
        // Fallback on earlier versions
    }
6
Sergio Trejo
(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y > 0) { //20
        [self.navigationController.navigationBar setPrefersLargeTitles:NO];
    } else {   
        [self.navigationController.navigationBar setPrefersLargeTitles:YES];
    }    
}
1
pideni

J'utilise une mise en page programmatique et j'ai rencontré un problème similaire avec les gros titres. J'ai trouvé la solution ici: https://stackoverflow.com/a/46692583/131378 . Dans viewDidLoad(), j'ai dû activer/désactiver la largeTitleDisplayMode. C’est la bonne combinaison qui a permis aux grands titres de fonctionner avec le défilement:

self.navigationItem.largeTitleDisplayMode = .never
self.navigationItem.largeTitleDisplayMode = .always
0
Mark Suman

Cochez la case " Préfère les grands titres " pour votre barre de navigation dans IB, ou utilisez:

navigationController?.navigationBar.prefersLargeTitles = true
0
Nemanja