Wie präsentiert man einen halbtransparenten (halb geschnittenen) Viewcontroller in iOS?

7

Ich verwende den folgenden Code, um einen Viewcontroller darzustellen. Mein Problem ist: Nach dem Abschluss der Animation wird der transparente Haupthintergrund undurchsichtig schwarz.

Wie kann ich das beheben und es als clearColor bleiben lassen?

%Vor%

update : Ich versuche den Inhalt von "self" zu sehen (Ansicht des Presenter-Viewcontrollers).

    
frankish 01.10.2013, 20:50
quelle

5 Antworten

8

Wie in den Kommentaren erwähnt, ist dies kein Transparenzproblem (andernfalls würden Sie erwarten, dass der Hintergrund weiß wird). Wenn die Animation presentViewController:animated:completion: abgeschlossen ist, wird der Präsentationsansicht-Controller tatsächlich aus dem visuellen Stapel entfernt. Das Schwarz, das Sie sehen, ist die Hintergrundfarbe des Fensters.

Da Sie anscheinend nur menuViewController als Host für menuView verwenden, um die Animation zu vereinfachen, können Sie menuViewController überspringen, menuView zu Ihrer vorhandenen View-Controller-Ansichtshierarchie hinzufügen und sie selbst animieren.

    
Brian Nickel 01.10.2013, 22:36
quelle
23

Sie können einen Ansichts-Controller darstellen und den ursprünglichen Ansichts-Controller darunter wie ein Formular in iOS 7 sichtbar haben. Dazu müssen Sie zwei Dinge tun:

  1. Legen Sie den modalen Darstellungsstil auf benutzerdefiniert fest:

    %Vor%
  2. Legen Sie den übergehenden Delegaten fest:

    %Vor%

In diesem Fall haben wir den Delegaten auf self gesetzt, aber es kann ein anderes Objekt sein. Der Delegat muss die zwei erforderlichen Methoden des Protokolls implementieren, die wie folgt möglich sind:

%Vor%

An dieser Stelle magst du denken, woher stammt diese SemiModalAnimatedTransition Klasse? Nun, es ist eine benutzerdefinierte Implementierung aus teehan + lax Blog übernommen.

Hier ist der Header der Klasse:

%Vor%

Und die Implementierung:

%Vor%

Nicht die einfachste Lösung, aber vermeidet Hacks und funktioniert gut. Der benutzerdefinierte Übergang ist erforderlich, da iOS standardmäßig den ersten View-Controller am Ende des Übergangs entfernt.

UPDATE:

Für iOS 8 hat sich die Landschaft erneut verändert. Alles, was Sie tun müssen, ist den neuen Darstellungsstil .OverCurrentContext , dh:

%Vor%     
Ric Santos 13.05.2014 06:23
quelle
4

Dies ist ein ziemlich einfaches zu lösendes Problem. Anstatt einen benutzerdefinierten Ansichtsübergang zu erstellen, müssen Sie nur den modalPresentationStyle für den darzustellenden Ansichtscontroller festlegen. Außerdem sollten Sie die Hintergrundfarbe (und den Alpha-Wert) für den darzustellenden View-Controller im Storyboard / über den Code festlegen.

%Vor%

In der IBAction-Komponente des präsentierenden View-Controllers -

%Vor%     
arpwal 20.05.2015 18:43
quelle
1

Sie sollten eine Eigenschaft verwenden modalPresentationStyle verfügbar seit iOS 3.2.

Zum Beispiel:

%Vor%     
adnako 07.10.2013 10:04
quelle
0

Versuchen Sie, die obere Ansicht transparent zu machen und fügen Sie eine andere Ansicht unterhalb Ihrer gewünschten Ansicht hinzu, und machen Sie die Hintergrundfarbe dieser Ansicht schwarz und setzen Sie Alpha 0,5 oder eine beliebige Deckkraftstufe.

    
Obj-Swift 01.10.2013 20:56
quelle

Tags und Links