Ich möchte eine transparente HUD-Grafik über den gesamten Bildschirm in einem UITabBarController-Setup überlagern. Die entsprechende Schaltfläche befindet sich auf dem ersten Bildschirm (FirstViewController), und die Überlagerung sollte auch die Registerkarten abdecken ... ist das möglich?Überlagern Sie eine Ansicht über den gesamten Bildschirm, wenn Sie UITabBarController verwenden?
Antwort
Sie können Ihre neue Ansicht direkt an Ihr Fenster anhängen.
[[[UIApplication sharedApplication] keyWindow] addSubview:myNewView];
Die obige Lösung von Henrik P. Hessel gut ist, aber es gibt ein Problem mit dieser Lösung. Das Problem wird bereits von elsurudo im Kommentar unter der Antwort erwähnt.
Das Problem, das ich mit dieser Lösung habe, ist, dass das Overlay auf dem Kopf steht und nicht rotiert.
Ich sah das gleiche Problem und ich versuchte verschiedene Dinge und ich habe eine Lösung, um dieses Problem zu beseitigen.
Die Lösung ist einfach. Sie können das myNewView
zu UITabBarController
Ansicht hinzufügen.
[self.tabBarController.view addSubview:myNewView];
Hoffe, es wird für zukünftige Besucher nützlich sein.
UIView *modal = [[UIView alloc] initWithFrame:self.view.window.frame];
[self.view.window addSubview:modal];
Dies könnte der gleiche sein wie der oben erwähnte [[UIApplication sharedApplication] keyWindow]
. Aber ich referenziere es gerne durch die aktuelle Ansicht.
Ich mochte wirklich was Chase Robert hier geschrieben hatte, so dachte ich, als auch die Swift 3. Version zur Verfügung zu stellen:
if let window = view.window {
let subView = UIView(frame: window.frame)
window.addSubview(subView)
}
ich den Zustand als auch hinzugefügt, so dass Sie, wenn Sie nicht zu einem Absturz kommen Es gibt keine Fenster.
Inspiriert von rdelmar's answer to another question, empfehle ich, setzen Sie Ihren UITabBarController in Container View anderen ViewController
. Dann fügen Sie Ihren hud auf ViewController
Ansicht hinzu.
Wenn Sie auf die Antwort einer anderen Person verweisen, müssen Sie sie * mit dem Namen * erwähnen. Ich habe Ihre Antwort bearbeitet, um dem nachzukommen. Weitere Informationen finden Sie in unseren [Referenzrichtlinien] (https://stackoverflow.com/help/referencing). –
- 1. Öffnen Sie eine Ansicht in UITabBarController
- 2. So überlagern Sie ein Symbolbild über einer vorhandenen Ansicht
- 3. Wie überlagern Sie die Ansicht über die Navigationssteuerungsleiste?
- 4. Wie erhalten Sie Bildschirm-Koordinaten, die dem gesamten Bildschirm entsprechen, und nicht die Ansicht berührt?
- 5. Wie erstellt man eine transparente Android-Anwendung, die den gesamten Bildschirm (über den Status/Navigationsleisten) nimmt?
- 6. Android - support.v7.PreferenceCategory füllen Sie den gesamten Bildschirm
- 7. Make Seite füllen Sie den gesamten Bildschirm ohne Leerzeichen überhaupt
- 8. So machen Sie den gesamten Bildschirm scrollbar in Viewpager Fragment
- 9. Symbolleiste füllt den gesamten Bildschirm
- 10. Überlagern Sie ein Bild über einer Tischzelle
- 11. Öffnen Sie eine Website von UITabBarController
- 12. Anwendung nicht den gesamten Bildschirm auf IPad
- 13. Pyautogui - Screenshot deckt den gesamten Bildschirm nicht
- 14. Kennenlernen Wenn Sie die Registerkarten von UITabBarController
- 15. X11 - Leeren Sie den Bildschirm
- 16. Rpresentation in Rstudio - Machen Sie Bild füllen Sie den gesamten Bildschirm
- 17. Überlagern Sie die Klasse
- 18. Wie ändere ich den gesamten Bildschirm?
- 19. Wie kann ich den gesamten Bildschirm anzeigen?
- 20. Wie überlagern Sie GUI über 3D-Szene in JavaFX?
- 21. Erfassen Sie den Bildschirm in eine Bitmap
- 22. DirectShow - So überlagern Sie Video mit Text
- 23. Ansicht, die den ganzen Bildschirm aufnimmt, wenn nicht gewünscht
- 24. Ermitteln Sie, ob eine Ansicht auf dem Bildschirm ist - Android
- 25. Überlagern Sie zwei Bitmaps und rubbeln Sie die obere aus
- 26. Scannen Sie den gesamten Code, wenn $? = 0 oder 1
- 27. Wie kann ich UIModalTransitionStylePartialCurl in einer UIView verwenden, die nicht den gesamten Bildschirm einnimmt?
- 28. Wie stelle ich sicher, dass eine TableViewController-Ansicht den gesamten Bildschirm einnimmt?
- 29. wie UITabBar Auswahl Indikator Bild füllen Sie den gesamten Raum?
- 30. Wie ein transparentes Overlay über den gesamten Bildschirm, einschließlich dem aktiven Tastatur erstellen
Das Problem, das ich mit dieser Lösung ist, dass die Overlay-Kopf nach unten kommt, und dreht sich nicht. Kennt jemand eine Lösung dafür? – elsurudo
Die Ausrichtung wird nur an den ersten View-Controller übergeben, der zu Ihrem Fenster hinzugefügt wurde. Wenn Sie nur eine Ansicht hinzufügen (ohne den Controller), müssen Sie zuerst die Rotation Ihrer Statusleiste einstellen (siehe Antworten hier: http://stackoverflow.com/questions/4436530/launching-app-in-landscape-orientation- Causes-Rotation-on-Launch) –