MacOS-MacAPP verwendet Main.storyboard, um das Ansichtsprogramm zu starten, das auf die Grube tritt

Da der Schwerpunkt auf der iOS-Entwicklung mobiler APPs liegt, gibt es weniger APP-Entwicklungen auf der Mac-Seite.Ich dachte auch, dass es ähnlich wie bei iOS sein würde.

tapfer, temperamentvoll

Ich habe es nicht erwartet, ich habe es wirklich nicht erwartet, es sind nur 3 Sekunden, schön! ! ! Unangenehm! ! !

Es hängt am Starteingang der Programmansicht, tritt auf einige Fallstricke, und ich werde die Schritte zum Erstellen eines macOS-Projekts nicht vorstellen.Sie können auf den Blogbeitrag verweisen

Ich habe das von OC erstellte macOS-Projekt verwendet und das Storyboard überprüft.Nach dem Erstellen des Projekts sieht die Benutzeroberfläche wie folgt aus:

Was Sie im visuellen Editor sehen. Es gibt drei Hauptbereiche, von denen jeder auch eine entsprechende textuelle Darstellung in der Dokumentgliederung hat:

  • Anwendungsszene : Menüleiste und Elemente.
  • Fenster-Controller-Szene : Konfigurieren Sie das Fensterverhalten.
  • View Controller Scene : Wo UI-Elemente leben

 

1. Grube 1: Löschen Sie den benutzerdefinierten ViewController-Controller, führen Sie APP oder ein leeres Fenster aus

Standardmäßig gibt es die Dateien ViewController.h, ViewController.m und Main.storyboard.Wenn Sie sich den Ansichtsbereich des Storyboards ansehen, werden Sie feststellen, dass der Programmeintrag AppDelegate standardmäßig auf WindowController und WindowController auf ViewController zeigt Anzeige ist die Ansicht auf ViewController. Sie können sich auf das obige Bild beziehen oder durch Ausführen der APP zum Anzeigen der Ebene auch verifiziert werden

Der Blogger löschte gewöhnlich die ViewController-Datei, erstellte dann selbst einen benutzerdefinierten MainViewController und fügte ihm eine Benutzeroberfläche hinzu und stellte fest, dass das vorherige leere Fenster beim Starten der APP immer noch angezeigt wurde. Obwohl die ViewController-Datei gelöscht wurde, verwies sie tatsächlich auf ViewController , also müssen wir die Ausrichtung wie folgt ändern:
über die Option „Identität“ im Bereich „Inspektor“ ganz rechts; Identität: Wenn das Steuerelement eine benutzerdefinierte Klasse verwendet, muss sie aus der Dropdown-Liste „Klasse“ ausgewählt werden

Wählen Sie den benutzerdefinierten MainViewController aus, dann wird die Benutzeroberfläche von Main.storyboard dem Controller zugeordnet, und die Ansicht auf MainViewController wird angezeigt, wenn er ausgeführt wird

 

2. Pit 2: Window in Main.storyboard kann nicht mit AppDelegate verknüpft werden

Ich möchte das Hauptfenster in Main.storyboard in AppDelegate verknüpfen, aber ich kann es nicht finden. Ich überprüfe die Bereichsansicht des Storyboards und finde, dass sein Fenster auf WindowController zeigt.

Wenn Sie auf zeigen, können Sie auch die zugehörige Klasse sehen

 

3. Grube 3: Löschen Sie Main.storyboard und verwenden Sie die benutzerdefinierte erstellte XIB-Datei

Nach dem Löschen der Main.storyboard-Datei meldete die Operation direkt einen Fehler „Konnte ein Storyboard namens „Main“ im Bundle NSBundle nicht finden; musste es wiederherstellen

 

Da die Hauptschnittstelle der Programmstartansicht im Projekt als Main.storyboard angegeben ist, können wir eine MainMenu.xib-Datei anpassen und MainMenu.xib in General ----Deployment Info ----Main Interface; angeben Zeit, es läuft Sie werden feststellen, dass die Hauptschnittstelle des Programmstarts die Benutzeroberfläche auf MainMenu.xib ist

Zu diesem Zeitpunkt können wir Window mit AppDelegate assoziieren; seine Schnittstelle ist im Vergleich zu Main.storyboard nicht so reichhaltig, also überprüfen wir einfach seine eigenen Schnittstelleneigenschaften

Zu diesem Zeitpunkt ist es in Ordnung, ob wir Main.storyboard oder eine benutzerdefinierte MainMenu.xib-Datei verwenden, um die Hauptschnittstelle zu laden

Initialisieren Sie die Schnittstelle über Main.storyboard und laden Sie die Hauptschnittstelle

Initialisieren Sie die Schnittstelle, indem Sie die Datei MainMenu.xib anpassen und die Hauptschnittstelle laden

 

Zusammenfassend werden auch einige Unterschiede zwischen der MacOS-Entwicklung und der iOS-Entwicklung zusammengefasst:

Spezifische Unterschiede finden Sie im Blog-Beitrag Unterschiede zwischen MacOS-MAC-Entwicklung und IOS-Entwicklung (reiner Code)

Der häufig verwendete Controller für die MacOS-Entwicklung ist NSWindowController anstelle von ViewController in iOS, da die meisten Mac-Apps mehrere Fenster haben, während iOS-Apps nur ein Hauptfenster haben.In den meisten Fällen arbeiten wir in ViewController, um verschiedene Seiten anzuzeigen, und die meisten UI-Steuerelemente beginnen mit UI, während die MacOS-Entwicklung genau umgekehrt ist.Grundsätzlich beginnen die UI-Steuerelemente mit NS. Die xib jedes NSWindowControllers enthält ein NSWindow und ein NSView.

Aufgrund des Mangels an Lernmaterialien für die MacOS-Entwicklung stellt sich beim Betrachten vieler aus dem Internet heruntergeladener Demos heraus, dass die meisten von ihnen xib und relativ wenige Storyboards verwenden, mit Ausnahme eines kleinen Teils der reinen Code-Handschrift!

Das von MacOS entwickelte Koordinatensystem unterscheidet sich auch von dem von iOS entwickelten Koordinatensystem: Der Ursprung des von MacOS entwickelten Koordinatensystems liegt in der unteren linken Ecke des XY-Koordinatensystems, während der Ursprung des von iOS entwickelten Koordinatensystems davon ausgeht die obere linke Ecke des XY-Koordinatensystems. Wenn Sie nicht daran gewöhnt sind, können Sie das Koordinatensystem natürlich zwangsweise ändern, z.

Der Methodenname lautet: - (BOOL)isFlipped{return YES;} Deklarieren Sie im Allgemeinen die Position eines Steuerelements im Fenster mit NSMakeRect(0, 0, 110, 110) oder CGRectMake(0, 0, 110, 110);

In der MacOS-Entwicklung bietet die Ansicht selbst keine Eigenschaften wie Hintergrundfarbe, Rahmen und abgerundete Ecken. Aber Sie können die Layer-Eigenschaft verwenden, um diese Effekte zu steuern, Sie müssen ihre Eigenschaft WantsLayer auf YES setzen, bevor Sie diese Eigenschaften verwenden. Das ist viel bequemer als ohne iOS zu entwickeln.Natürlich können diese Effekte auch durch Neuzeichnen erreicht werden - (void)drawRect:(NSRect)dirtyRect

In der Entwicklung von MacOS wird in der Regel NSWindow als Fenster verwendet.Wenn Sie das Springen und Anzeigen eines anderen Fensters realisieren möchten, müssen Sie das aktuelle Fenster schließen und dann das nächste Fenster anzeigen.

 

Supongo que te gusta

Origin blog.csdn.net/MinggeQingchun/article/details/116273771
Recomendado
Clasificación