J'ai un UIPresentationController personnalisé et remplace frameOfPresentedViewInContainerView pour une présentation de viewController personnalisée. Tout fonctionne bien, sauf pour la barre d'état.Comment utiliser modalPresentationCapturesStatusBarAppearance = NO avec un UIPresentationController personnalisé?
Je ne veux pas que la barre d'état change l'apparence du tout - elle devrait juste rester telle quelle. Maintenant, la documentation d'Apple: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/occ/instp/UIViewController/modalPresentationCapturesStatusBarAppearance dit si modalPresentationStyle n'est pas UIModalPresentationFullScreen OU modalPresentationCapturesStatusBarAppearance est NON, je devrais être bien et la barre d'état ne devrait pas changer.
Avec ce code:
- (BOOL)prefersStatusBarHidden {
NSLog(
@"prefersStatusBarHidden was called %d %ld",
self.modalPresentationCapturesStatusBarAppearance,
(long)self.modalPresentationStyle
);
return YES;
}
Je vois que prefersStatusBarHidden est appelée, même si modalPresentationCapturesStatusBarAppearance est NO (affiche que 0) et modalPresentationStyle est UIModalPresentationCustom (affiche comme 4).
De toute évidence, c'est la raison pour laquelle la barre d'état change lors de la présentation de viewController.
Mais pourquoi?
Ma pensée sur ceci est que iOS pense que le viewController est présenté en plein écran même si ce n'est pas le cas.
J'ai découvert la propriété de UIPresentationController, shouldPresentInFullscreen - elle renvoie YES par défaut. Renvoyer NO n'aide pas du tout, donc je ne comprends pas ce que cette propriété fait même ... Il n'a littéralement aucun effet. La même chose s'applique à la propriété presentationStyle - Je ne vois aucun effet lors de la modification. Je m'attendais à ce que la propriété presentationStyle soit "redirigée" vers la propriété viewControllers modalPresentationStyle, mais cela reste à UIModalPresentationCustom, ce qui doit être le cas pour initier la présentation personnalisée en premier lieu. Donc, mes questions sont: Est-ce que quelqu'un sait comment garder la barre d'état comme il est avec un UIPresentationController personnalisé - et quelqu'un peut-il expliquer les propriétés shouldPresentInFullscreen et presentationStyle?
Merci! :)
Avez-vous déjà trié tout cela? J'essaye également d'obtenir un UIPresentationController pour ne pas présenter le plein écran (en fait je veux être capable d'interagir avec certains éléments d'affichage sous-jacents - comme une barre d'onglets). Je ne peux pas comprendre comment l'obtenir pour me donner un PresentViewController qui n'est pas le contrôleur de vue racine de la fenêtre. –
Non, malheureusement, je n'ai jamais compris :( –
Il semble que cela a été résolu dans iOS 10. J'ai trouvé une solution hackish pour iOS 9 ici: https: // stackoverflow.com/questions/34819013/presentation-a-view-controller-without-change-the-status-bar-color-like-uialert/34819014 # 34819014 –