2010-10-04 8 views

Antwort

27

Sie können Ihre neue Ansicht direkt an Ihr Fenster anhängen.

[[[UIApplication sharedApplication] keyWindow] addSubview:myNewView]; 
+1

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

+0

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) –

12

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.

2
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.

0

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.

2

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.

screenshot for answer

+0

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). –

Verwandte Themen