2015-03-31 1 views
0



Disons que j'ai dix contrôleurs de vue dans mon application IOS. Supposons que des événements spécifiques (par exemple: réussite/échec de la connectivité BLE) soient signalés dans le contrôleur d'application.
Je veux bloquer le contrôleur de vue en cours (quel que soit le contrôleur de vue) et afficher une vue semi-transparente pendant 2 secondes en fonction de l'événement du contrôleur d'application.

Comment puis-je réaliser cela dans IOS. Toute aide peut être très appréciée.Comment afficher une vue semi-transparente à partir du contrôleur d'application IOS

Répondre

1

Ma solution pour le problème ci-dessus est la suivante:

Créer un UIView overlay transparent personnalisé qui vient sur une vue, navigationbar et tabbbar. -Dans le contrôleur de navigation (ou le contrôleur de barre d'onglets) dans lequel est intégré le contrôleur de vue, je crée une vue personnalisée dont le cadre est égal au cadre de la vue du contrôleur de navigation.

-Alors je l'ai mis en la mettant hors-champ est origin.y à navigationController.view.height

-Alors je crée 2 fonctions -(void)showOverlay et -(void)hideOverlay qui animent la vue de superposition sur et hors écran:

- (void)hideOverlay{ 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.3]; 

    CGRect frm = self.helpView.frame;//helpView is my overlay 
    frm.origin.y = self.offscreenOffset; //this is an Y offscreen usually self.view.height 
    self.helpView.frame = frm; 

    [UIView commitAnimations]; 
} 

- (void)showOverlay{ 

    [self.view bringSubviewToFront:self.helpView]; 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.3]; 

    CGRect frm = self.helpView.frame; 
    frm.origin.y = self.onscreenOffset; 
    self.helpView.frame = frm; 

    [UIView commitAnimations]; 
} 

-Dans mon contrôleur de vue, je peux appeler

[(MyCustomNavCtrl *)self.navigationController showOverlay]; 
[(MyCustomNavCtrl *)self.navigationController hideOverlay]; 
And that's about it. 
1

Il suffit de définir votre point de vue alpha comme la propriété

viewController.view.alpha = 0.5; 
+0

Dois-je pousser contrôleur de vue du contrôleur d'application? ou devrais-je vérifier quel contrôleur de vue est présent, je devrais ajouter ce point de vue? – Stallion

+0

Il suffit de voir la vue en mode Modèle! – Retro

0

définir le niveau alpha d'une vue fera tous les sous-vues transparent aussi bien. Si vous souhaitez simplement que votre arrière-plan soit semi-transparent, procédez comme suit.

myView.backgroundColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 0.5) 

(Syntaxe Swift)