Modifier la valeur alpha de la barre de navigation
Est-ce possible?
Je veux changer la valeur alpha de la barre de navigation de mon point de vue contrôleur (une animation), mais si je ne self.navigationController.navigationBar.alpha = 0.0;
la partie de l'écran de la navigationBar a pris disparaît totalement et laisse une boîte noire, qui n'est pas ce que je voudrais (je préfère que ce soit la couleur de self.view
'arrière-plan).
source d'informationauteur Doug Smith
Vous devez vous connecter pour publier un commentaire.
Que j'ai le soutien de Colin réponse, je veux vous donner un indice supplémentaire pour personnaliser l'apparence d'un UINavigationBar y compris l'alpha.
L'astuce est d'utiliser UIAppearance pour votre NavigationBar. Cela vous permet d'assigner une UIImage à votre NavigationBar de backgroundImage. Vous pouvez générer ces UIImages par programme et l'utiliser pour que UIColors et définir les couleurs " alpha propriétés que vous le souhaitez. J'ai fait cela à l'un de mes propres applications et il fonctionne comme prévu.
Ici, je vous donne quelques des extraits de code:
E. g. dans votre ..AppDelegate.m ajouter ces lignes dans didFinishLaunchingWithOptions:
Mettre en œuvre des méthodes pratiques de programmation pour crée UIImage objets, par exemple, créer une nouvelle catégorie pour UIImage:
Re-travailler votre image, de la création à 1. (#import "UIImage+initWithColor.h" dans AppDelegate.m et de remplacer le "néant"s):
C'est votre endroit d'intérêt: par la modification des couleurs de l'alpha de la propriété vous êtes influencer le niveau d'opacité de vous NavigationBar ainsi!
J'ai créé un petit projet de démonstration et vous ajouter deux captures d'écran:
la vue elle-même a un jaune backgroundColor.
Le backgroundImages de la NavigationBar ont une couleur rouge.
Capture d'écran 1 montre un NavigationBar avec une valeur alpha = 0.2.
Capture d'écran 2 affiche un NavigationBar avec une valeur alpha = 0.8.
La façon la plus simple de le faire est de modifier la composante alpha de navigationBar arrière-plan de la vue, qui, à cette époque (iOS9) est une première navigationBar sous-vue. Notez cependant que nous ne savons jamais si la sous-vue de la hiérarchie sera changé par apple dans les versions ultérieures, donc je dois être prudent.
Directement à partir de l'Apple Developer référence:
Vous pouvez cependant régler la transparence de la propriété de la barre de navigation. Si vous ne
[self.navigationController.navigationBar setTranslucent:YES];
devrait résoudre votre problème. Vous pouvez aussi essayer de voir si l'un des
UIBarStyle
les énumérations sont quelque chose que vous voulez.MickBraun réponse rapide:
Dans AppDelegate.swift ajouter ces lignes dans didFinishLaunchingWithOptions:
Mettre en œuvre des méthodes pratiques de programmation pour créer UIImage objets.
Si vous voulez juste pour se débarrasser de la
navigationBar
dans un animé que vous pouvez faire:Si vous souhaitez contrôler l'animation et son nécessaire de définir le
alpha
à0.0
lire sur:La "boîte noire" que vous voyez est à partir de la vision sous-jacente ou d'une fenêtre. Si vous voulez juste votre point de vue de la couleur au lieu de la "boîte noire" n':
Si vous voulez que votre vue à l'emplacement de la
navigationBar
était, vous devez augmenter laheight
de votre point de vue:Vous avez un peu d'options en fonction, en partie, sur le barStyle de votre
UINavigationBar
. La chose principale est de réaliser qu'il est probable que vous n'avez pas nécessairement à animer la propriété alpha pour obtenir l'effet que vous décrivez.UIBarStyleDefault
ouUIBarStyleBlackOpaque
Option Un est à définir votre UINavigationBar translucide propriété à OUI, puis d'animer l'alpha:Dans ce cas, votre vue sera placé derrière votre barre de navigation, même lorsque son alpha est de 1.0. L'inconvénient de ce scénario est que, même avec un 1.0 alpha, vous pouvez voir une teinte de vos point de vue de la couleur d'arrière-plan derrière le UINavigationBar. Aussi, l'ensemble de vos sous-vues devra être placé de 44 points de haut en bas.
UIBarStyleDefault
ouUIBarStyleBlackOpaque
Option B est de cacher la barre de navigation dans un environnement multi-disolve animation de transition. Cela permettra d'exposer le superview de laUINavigationBar
. Si vous utilisez unUINavigationController
puis le fond noir de laUINavigationController
point de vue est ce que vous verrez, mais vous pouvez définir la couleur d'arrière-plan de laUINavigationController
vue pour correspondre à votre vue pour obtenir l'effet que vous souhaitez:Une chose à surveiller avec cette solution pourrait être un problème de mise en page si le
UINavigationController
les mises à jour de votre point de vue image, parce que vous avez désactivé leUINavigationBar
. Ce serait bien, sauf que les sous-vues peuvent passer de 44 pixels si ils sont ancrés haut à gauche. Pour contourner cela, vous pourriez envisager de fixer vos sous-vues vers le bas de votre point de vue à la place (avec des ressorts ou avec des contraintes de mise en forme).UIBarStyleDefault
ouUIBarStyleBlackOpaque
Option C est de couvrir lesUINavigationBar
avec un autre point de vue, de nouveau à l'aide d'une croix-disolve animation de transition:UIBarStyleBlackTranslucent: Cette option est la plus facile, comme le
UINavigationBar
est déjà translucide, et votre point de vue est déjà derrière elle. Simplement animer l'alpha:Cela devrait vous obtenez l'effet que vous désirez:
N'essayez pas de faire cela dans une animation, travaux dans ma viewDidAppear bien, espérons que cela fonctionne.
Vous pouvez également essayer de définir un arrière-plan de la vue en dessous de la barre de navigation et de modifier ce point de vue directement.
Swift3