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?
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.
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%Vor iOS 8 machen Sie das:
%Vor%In iOS 8 müssen Sie Folgendes tun:
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.
Fügen Sie diesen Code mit SWIFT 4 einfach dem View-Controller hinzu, der einen transparenten Hintergrund haben soll.
%Vor%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.