Ich habe eine Ansicht, die in der MainWindow.xib geladen wird. Es ist nur eine Ansicht mit einem uiimageview, die ein Bild auf dem gesamten Bildschirm (320 X 480) zeigt. Wenn die App Lasten zeige ich diese Ansicht und dann mache ich einIPhone - UIView addSubview Abstand oben
[self.view addSubview:tabbarController.view];
Tab Bar-Controller nur UITabBarController mit 2 View-Controller ist ihm hinzugefügt. Wenn die Ansicht der tabbarController der Unteransicht hinzugefügt wird, bleibt oben eine Lücke von etwa 20 Pixeln. Meine App hat eine Statusleiste, aber das ist grundsätzlich Platz für ein anderes. Dies geschieht, wenn ich dies meiner Ansicht-Controller hinzufügen:
self.view.frame = CGRectMake(0, 0, 320, 480);
Kann das jemand erklären. Ich tat
self.view = tabbarController.view;
aber wurde mir gesagt, ich sollte das nicht tun. Jetzt füge ich eine Unteransicht hinzu, aber ich verstehe nicht, warum ich den CGRect meiner Ansicht anpassen muss, um die 20px nicht anzuzeigen.
Vielen Dank für eine klare Erklärung. Vielleicht sollte ich zurückgehen und einen Teil meiner App umstrukturieren. Ich möchte die Dinge auf die richtige Art und Weise tun, aber ich dachte, es wäre besser, die View-Controller-Logik vom App-Delegaten zu trennen - also macht mein Root-View-Controller alles, was er braucht. Das würde erklären, warum ich in meinem Root-View-Controller, wenn ich self.view = tabbarController.view statt als Unteransicht hinzufügen würde, die Lücke nicht bekommen würde. Gute Antwort. Ich würde mehr wählen, wenn ich könnte. – Brian
Es klingt, als wäre dein Instinkt hier gut. Dies ist nur eine der Design-Einschränkungen in Cocoa Touch, für die wir jetzt arbeiten müssen. Bedenken Sie jedoch, dass Sie die tabbarController.view nicht unbedingt von Ihrem App-Delegaten in Ihr Fenster einfügen müssen. Sie können es in Ihrem View-Controller hinzufügen, wenn Sie der Meinung sind, dass dies am sinnvollsten ist. Sie müssen nur Zugriff auf das Fensterobjekt haben, entweder über die keyWindow-Methode oder indem Sie es als Eigenschaft auf Ihrem Controller in applicationDidFinishLaunching: setzen. – cduhn
aber bedeutet das nicht, dass die tabbarcontroller.view jetzt eine Unteransicht der window.view ist? Aber es ist nicht korrekt in meinem Fall habe ich eine Anzeigenansicht und dann eine zweite Inhaltsansicht. Und ich füge die tabbarcontroller.view zur Inhaltsansicht hinzu. Auf diese Weise wird der Viewcontroller den Content/Adview abhängig von den Anzeigen verwalten. Wenn ich die tabbarcontroller.view zum Fenster hinzufüge, glaube ich nicht, dass ich in der Lage sein werde, die Ansichten mit meinem viewcontroller zu handhaben. Was denken Sie? – LolaRun