web-dev-qa-db-fra.com

Fond transparent ModalViewController iOS 8

L'ancien projet ouvert dans Xcode 6 et un problème détecté expliquent que l'arrière-plan n'est pas transparent dans le contrôleur de vue présenté. J'ai utilisé la solution dans le sujet ci-dessous et cela fonctionnait jusqu'à présent dans iOS7 . iOS: ModalView avec fond transparent?

S'il vous plaît des conseils sur la façon de traiter avec iOS 8.

19
Madman

Essayez de définir la propriété modalPresentationStyle du contrôleur présenté view sur la nouvelle constante UIModalPresentationOverCurrentContext, par exemple.

[_modalViewController setModalPresentationStyle:UIModalPresentationOverCurrentContext]
47
mmccomb

la solution de mmccomb a finalement fonctionné pour moi, mais je devais modifier deux choses. Espérons que ces détails aident quelqu'un:

1) Je devais définir la propriété du contrôleur de vue présenté à partir du contrôleur de vue présentation, comme ceci:

MyViewController *myVc = [segue destinationViewController];
[myVc setModalPresentationStyle:UIModalPresentationOverCurrentContext];

La définition du style de présentation à partir du viewDidLoad du VC présenté ne fonctionnait pas.

2) J'utilisais un story-board et je devais entrer dans les propriétés de la division et définir le style de présentation sur Par défaut. Définir une autre valeur m'a donné un fond noir.

19
itnAAnti

Solution d'interface constructeur

Merci à la solution programmatique de @ mmccomb. 

Atteindre cela en:

  1. Créer une séquence dans votre fichier de scénarimage (ctrl + clic-glisser)

  2. Choisir Présenter modalement dans les options du menu déroulant

  3. Sélectionnez la séquence modale dans le storyboard de l'IB - (uniquement la séquence)

  4. Définissez Présentation dans l'inspecteur d'attributs à Contexte actuel

Je recommanderais de modifier l'alpha/opacité à 50% + et d'utiliser une couleur d'arrière-plan plus sombre, sinon vous aurez du mal à faire la distinction entre le contenu du contrôleur de la vue présentation et celui que vous présentez en mode modal.

17
ChrisHaze

Si vous avez changé le style de présentation dans "segue", vous devez le rétablir par défaut. ou cela vous donnera un fond noir.

J'ai essayé d'utiliser Storyboard avec Segue config, mais cela ne fonctionne pas.

voici le code fonctionne pour moi, dans la méthode - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender:

// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"PresentStationChooserViewController"])
{
    ChooseStationViewController *controller = [segue destinationViewController];
    controller.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.7f];
    [controller setModalPresentationStyle:UIModalPresentationOverCurrentContext];
    controller.stationList = _remoteStations;
}
4
c9s

iOS8 +

S'il vous plaît jeter un oeil sur l'extrait de code ci-dessous, son résolu mon problème,

SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;           
[self presentViewController:secondViewController animated:YES completion:nil];    
0
arunjos007