presentViewController schwarzer Hintergrund statt transparent

8

Ich habe eine Ansicht, die ich dem Benutzer auf die übliche Weise präsentieren möchte (vom unteren Bildschirmrand nach oben gleiten). Etwa die Hälfte dieser Ansicht ist ein transparenter Hintergrund und die untere Hälfte hat einige Eingabefelder (stellen Sie sich vor, wie die Tastatur erscheint). Wenn ich [self presentViewController] auf dem rootViewController aufruft, wird die Ansicht nach oben verschoben, aber etwa eine halbe Sekunde später, wo die Ansicht transparent war, wird sie stattdessen durch schwarz ersetzt. Dies geschieht sowohl mit presentViewController als auch mit presentModalViewController. Wie ändere ich dieses Verhalten?

    
Jacob Joz 29.10.2012, 05:46
quelle

5 Antworten

-1

Am Ende sieht es so aus, als ob es nicht transparent sein könnte. Ich habe das umgangen, indem ich diese Ansicht als Unteransicht außerhalb der Grenzen des Root-View-Controllers hinzugefügt habe, und dann mit Hilfe von Animationsblock. Nicht viel Extra-Code, aber es wäre schön gewesen, Standard-iOS-Verhalten zu verwenden, um es zu tun.

    
Jacob Joz 30.10.2012, 03:28
quelle
21

Dies ist möglich, und rockybalboa bietet eine Lösung für dieses Problem im Forenbeitrag auf raywendlich.com :

iOS 8 UIModalPresentationCurrentContext ist nicht transparent?

Diese Lösung wird in Objective-C mit Balboa's Antwort zitiert:

  

Vor iOS 8 machen Sie das:

%Vor%
  

In iOS 8 müssen Sie Folgendes tun:

%Vor%

Ergänzen Sie den obigen Code mit dem Swift-Äquivalent:

%Vor%

Nachdem ich das mit Xcode 6.3 beta 3 auf iOS 8.1 mit Swift 1.2 implementiert habe, funktioniert es perfekt.

Nur ein Kommentar, dass ich drei verschiedene SO-Fragen zu diesem Thema - die neueren, die jetzt als Duplikate gekennzeichnet sind - vor dem Finden und Versuchen der Ray Wenderlich-Forum-Lösung gesehen haben.

    
Max MacLeod 26.03.2015 11:49
quelle
3

Soweit ich weiß, wird transparenter Hintergrund nicht unterstützt, wenn Sie einen Modellansicht-Controller präsentieren. Versuchen Sie, den Controller in Ihrem Root-View-Controller zu behalten und fügen Sie dem Root-View-Controller einfach eine Unteransicht hinzu.

    
Oscar 29.10.2012 05:57
quelle
1

Fügen Sie diesen Code mit SWIFT 4 einfach dem View-Controller hinzu, der einen transparenten Hintergrund haben soll.

%Vor%     
Ken Laviers 26.02.2018 12:28
quelle
0

Ich hatte ein ähnliches Problem mit dem schwarzen Hintergrund, der nach einer kurzen Verzögerung beim Erstellen des Controllers mit

auftrat %Vor%

Was das Problem für mich gelöst hat, war ein entsprechendes Objekt in IB zu erstellen und den Viewcontroller mit seiner Storyboard ID zu instanziieren:

%Vor%

Ich nehme an, dass es über IB einige zusätzliche Initialisierungen macht.

    
Oliver 15.12.2013 20:51
quelle

Tags und Links