Ich möchte vor allen anderen Ansichten, sogar der Navigationsleiste, eine Art "Popup" -Ansicht anzeigen, die so aussieht:
- schwarzer Vollbildhintergrund mit einem Alpha von 0,5, um den anderen
UIViewController
darunter zu sehen. - ein
UIView
Fenster in der Mitte mit einigen Informationen (ein Kalender, wenn Sie alles wissen wollen).
Zu diesem Zweck habe ich einen UIViewController erstellt, der die beiden UIViews
(Hintergrund und Fenster) enthält, und ich versuche, ihn anzuzeigen. Ich habe es einfach versucht [mySuperVC addSubview:myPopUpVC.view]
, aber ich habe immer noch die Navigationsleiste oben.
Ich habe versucht, es als Modal darzustellen, aber die UIViewController
Unterseite verschwindet und ich verliere meinen Transparenzeffekt.
Jede Idee dazu, ich bin sicher, es ist ganz einfach ...
Vielen Dank!
ios
uiviewcontroller
uinavigationbar
popupwindow
Nicolas Roy
quelle
quelle
Antworten:
Sie können dies tun, indem Sie Ihre Ansicht direkt zum keyWindow hinzufügen:
UPDATE - Für Swift 4.1 und höher
quelle
[self.navigationController.view addSubview:overlayView];
ist was du wirklich willstquelle
Hier ist eine einfache, elegante Lösung, die für mich funktioniert. Sie können die z-Position der Navigationsleiste unterhalb der Ansicht einstellen:
Denken Sie daran, es auf 0 zurückzusetzen, wenn Sie fertig sind.
quelle
Schnelle Versionen für die überprüfte Antwort:
Swift 4:
Swift 3.1:
quelle
Fügen Sie Ihre Ansicht als Unteransicht von NavigationController hinzu.
Sie können es auch über das Fenster hinzufügen:
Hoffe das hilft.. :)
quelle
let navigationBar = viewController.navigationController!.navigationBar navigationBar.addSubview(coverView)
Dalef tolle Lösung in Kürze:
quelle
Die Antwort von @ Nam funktioniert hervorragend, wenn Sie nur Ihre benutzerdefinierte Ansicht anzeigen möchten, Ihre benutzerdefinierte Ansicht jedoch eine Benutzerinteraktion erfordert. Sie müssen die Interaktion für die deaktivieren
navigationBar
.Wie in Nams Antwort gesagt, vergessen Sie nicht, diese Änderungen rückgängig zu machen:
Mit einer Erweiterung können Sie dies besser tun:
Und benutze es einfach so:
quelle
Schnelle Version der Antwort von @Nicolas Bonnet:
Vergessen Sie nicht, dass das Fenster eine starke Eigenschaft sein muss, da die ursprüngliche Antwort zu einer sofortigen Freigabe des Fensters führt
quelle
Ich empfehle Ihnen, ein neues UIWindow zu erstellen:
Anschließend können Sie Ihre Ansicht in einem anderen UIViewController verwalten. So entfernen Sie die Fenster:
hoffe das wird helfen!
quelle
Es gibt mehr als einen Weg, dies zu tun:
1- Fügen Sie Ihr
UIView
On hinzu,UIWindow
anstatt es hinzuzufügenUIViewController
. Auf diese Weise wird es alles im Griff haben.2- Verwenden Sie einen benutzerdefinierten Übergang, bei dem Ihr UIViewController mit einem Alpha von 0,5 im Hintergrund angezeigt wird
Dafür empfehle ich Ihnen Folgendes: https://github.com/Citrrus/BlurryModalSegue
quelle
quelle
Hinweis: Wenn Sie eine Ansicht im Vollbildmodus hinzufügen möchten, verwenden Sie nur den folgenden Code
Fügen Sie diese Erweiterung von UIViewController hinzu
Fahren Sie wie gewohnt mit dem Hinzufügen der Unteransicht fort
Verwenden Sie jetzt beim Hinzufügen von viewDidAppear von UIViewController
quelle
In Swift 4.2 und Xcode 10
In Ziel C.
UIView * spinnerView; // Dies ist Ihre Ansicht
Dies kann nur im Hoch- oder Querformatmodus funktionieren.
Ein weiterer einfacher Code ist:
quelle
Ich würde eine UIViewController-Unterklasse verwenden, die eine "Container-Ansicht" enthält, in die Ihre anderen Ansichts-Controller eingebettet sind. Anschließend können Sie den Navigationscontroller in der Containeransicht hinzufügen (z. B. mithilfe des Segues für die Einbettungsbeziehung).
Siehe Implementieren eines Container View Controllers
quelle
Diese Methode funktioniert mit xcode 9.4, iOS 11.4
quelle
quelle
Sie müssen dem ersten Fenster eine Unteransicht mit dem Typ UITextEffectsWindow hinzufügen. Zum einen, weil benutzerdefinierte Tastaturen ihr UITextEffectsWindow hinzufügen und wenn Sie eine Unteransicht hinzufügen, funktioniert dies nicht richtig. Sie können dem letzten Fenster auch keine Unteransicht hinzufügen, da die Tastatur beispielsweise auch ein Fenster ist und Sie nicht über das Tastaturfenster präsentieren können. Die beste Lösung, die ich gefunden habe, besteht darin, dem ersten Fenster mit dem Typ UITextEffectsWindow eine Unteransicht (oder sogar einen Push-View-Controller) hinzuzufügen. Dieses Fenster behandelt die Zubehöransicht, die Navigationsleiste - alles.
quelle