Comment faire un UISegmentedControl
dans le cadre d'un UINavigationBar
ci-dessous? Est-il connecté au UINavigationBar
ou est-ce une vue séparée complète qui vient d'être ajoutée en tant que sous- UINavigationController
vue au contrôleur de vue de. On dirait que cela fait partie du UINavigationBar
car il y a une ombre sous la barre.
ios
uinavigationbar
uisegmentedcontrol
yoeriboven
la source
la source
Réponses:
C'est un effet simple à accomplir.
Tout d'abord, placez un segment dans une barre d'outils. Placez cette barre d'outils juste en dessous de la barre de navigation. Définissez le délégué de la barre d'outils sur votre contrôleur de vue et revenez
UIBarPositionTopAttached
danspositionForBar:
. Vous pouvez voir dans l'application Store, si vous effectuez un geste pop interactif, que la barre de segment ne se déplace pas de la même manière que la barre de navigation. C'est parce qu'ils ne sont pas le même bar.Maintenant, pour enlever la racine des cheveux. Le "hairline" est une sous
UIImageView
-vue de la barre de navigation. Vous pouvez le trouver et le définir comme masqué. C'est ce que fait Apple dans leur application de calendrier native, par exemple, ainsi que dans l'application Store. N'oubliez pas de l'afficher lorsque la vue actuelle disparaît. Si vous jouez un peu avec les applications Apple, vous verrez que la racine des cheveux est définie sur masquéeviewWillAppear:
et sur affichée dansviewDidDisappear:
.Pour obtenir le style de la barre de recherche, définissez simplement la barre
searchBarStyle
surUISearchBarStyleMinimal
.la source
initWithRect: CGRectMake(0, self.toplayoutGuide.length, 320, 44)
ou peut-être utiliser la mise en page automatique pour le positionner? Quel sera le nouveau sommet des childViews, est-ce que ce seraself.toplayoutGuide.length + 44
?Une autre approche consisterait à rechercher la racine des cheveux et à la déplacer sous la barre d'outils ajoutée. Voici ce que j'ai trouvé.
J'ai également trouvé l' exemple de code Apple NavBar (Customizing UINavigationBar) très utile pour résoudre ce problème.
Assurez-vous également de gérer la bordure supérieure de la UIToolbar , elle pourrait apparaître et vous pourriez la confondre avec la racine des cheveux de la NavBar. Je voulais aussi que la UIToolbar ressemble exactement à la NavBar, vous voudrez probablement ajuster les barres d'outils
barTintColor
alors.la source
Voici une approche Swift orientée protocole de ce problème particulier, en se basant sur la réponse acceptée:
HideableHairlineViewController.swift
SampleViewController.swift
la source
shadowImage
propriété de la barre de navigation.Vous pouvez trouver la barre de navigation avec UISegmentedControl dans l'exemple de code Apple: https://developer.apple.com/library/ios/samplecode/NavBar/Introduction/Intro.html
Ou vous pouvez le créer par programme, voici le code dans ma réponse dans l'autre fil Ajouter un contrôle segmenté à la barre de navigation et conserver le titre avec des boutons
la source
Je voulais faire la même chose ... Et j'ai obtenu ceci:
1 - Sous-classe UINavigationBar
2 - Réglez votre NavigationController avec la sous-classe
3 - Ajoutez votre UISegmentedControl dans la barre de navigation
4 - Run and Fun -> n'oubliez pas de mettre la même couleur sur les deux
source de recherche:
Piratage de UINavigationBar
SO question
la source
UINavigationButton
s'agit d'une API privée et que votre application sera rejetée pour son utilisation. Vous devriez essayer de masquer l'utilisation de cette classe.Apple a un exemple d'application spécialement pour cela. Il décrit la configuration d'une image d'ombre transparente et d'une image d'arrière-plan colorée pour la barre de navigation et comment configurer une vue sous la barre de navigation. Il contient également des exemples d'autres personnalisations de la barre de navigation.
Voir https://developer.apple.com/library/ios/samplecode/NavBar/Introduction/Intro.html
la source
J'ai essayé d'éliminer la racine des cheveux en utilisant la méthode de @ Simon mais cela n'a pas fonctionné. Je fais probablement quelque chose de mal parce que je suis super noob. Cependant, au lieu de supprimer la ligne, vous pouvez simplement la masquer à l'aide de l'
hidden
attribut. Voici le code:J'espère que cela aide quelqu'un!
la source
UISegmentedControl sous la barre de navigation UIN dans Swift 3/4
Détails
Xcode 9.2, rapide 4
Échantillon complet
Résultats
la source
UINavigationController
?Il existe de nombreuses façons de faire ce que vous avez demandé. Le plus simple étant bien sûr de simplement le créer dans le constructeur d'interface, mais je suppose que ce n'est pas ce que vous aviez à l'esprit. J'ai créé un exemple de l'image que vous avez publiée ci-dessus. Ce n'est pas exactement la même chose, mais vous pouvez jouer avec les nombreuses propriétés pour obtenir l'apparence et la convivialité de ce que vous recherchez.
Dans le ViewController.h
Dans le ViewController.m
la source
AffichagesSearchBarInNavigationBar est le moyen d'afficher une barre de recherche ainsi que sa barre de portée dans la barre de navigation.
vous devez simplement masquer la barre de recherche chaque fois que vous affichez un titre personnalisé
la source