J'ai un UIViewController vue comme une sous-vue/modal sur le dessus de l'autre UIViewController vue, comme celui de la sous-vue/modal doit être transparente et de tous les composants est ajouté à la sous-vue doit être visible. Le problème est que j'ai est la sous-vue montre fond noir au lieu d'avoir clearColor. Je suis en train de faire UIView comme un clearColor pas de fond noir. Quelqu'un sait quel est le problème avec elle? Toute suggestion apprécié.
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:NO];
SecondViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
self.view.opaque = YES;
self.view.backgroundColor = [UIColor clearColor];
}
RÉSOLU: j'ai corrigé les problèmes. Il fonctionne si bien pour les deux de l'iPhone et de l'iPad. Modal-Vue-Contrôleur sans fond noir juste clearColor/transparent. La seule chose que j'ai besoin de changement, j'ai remplacé UIModalPresentationFullScreen à UIModalPresentationCurrentContext. Comment simple que cela!
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
AVIS: Si vous utilisez un modalPresentationStyle propriété de navigationController:
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
AVIS: La mauvaise nouvelle, c'est que la solution ci-dessus ne fonctionne pas sur iOS 7. La bonne nouvelle, c'est que j'ai résolu le problème pour iOS7! J'ai demandé à quelqu'un pour obtenir de l'aide et voici ce qu'il dit:
Lors de la présentation d'une vue contrôleur modal, iOS supprime l'affichage des contrôleurs en dessous de la vue de la hiérarchie pour la durée qu'il est présenté. Tandis que la vue de votre modal présenté-vue-contrôleur est transparent, il n'y a rien en dessous, à l'exception de la fenêtre d'application, qui est noir. iOS 7 a introduit une nouvelle modal style de présentation, UIModalPresentationCustom, qui provoque iOS de ne pas supprimer les points de vue sous la vue-contrôleur. Toutefois, pour utiliser cette modal style de présentation, vous devez fournir votre propre transition délégué pour gérer la présentation et de rejeter les animations. C'est décrit dans les " Transitions Personnalisées à l'Aide de la Vue des Contrôleurs de la conférence de la WWDC 2013 https://developer.apple.com/wwdc/videos/?id=218 qui couvre également comment mettre en place votre propre transition délégué.
Vous pouvez voir ma solution pour le problème ci-dessus, dans iOS7: https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions