Xcode6
hat die Empty Application
Vorlage beim Erstellen eines neuen Projekts entfernt. Wie können wir eine leere Anwendung (ohne Storyboard) in Xcode6
und darüber erstellen , wie in früheren Versionen?
Xcode6
hat die Empty Application
Vorlage beim Erstellen eines neuen Projekts entfernt. Wie können wir eine leere Anwendung (ohne Storyboard) in Xcode6
und darüber erstellen , wie in früheren Versionen?
Antworten:
In XCode6
und über Versionen gibt es keine Option zum direkten Erstellen einer leeren Anwendung wie in XCode5
und früher. Trotzdem können wir eine Anwendung erstellen, ohne die Storyboard
folgenden Schritte auszuführen:
Single View Application
.Main.storyboard
undLaunchScreen.xib
(wählen Sie sie aus, klicken Sie mit der rechten Maustaste und wählen Sie, ob Sie sie entweder aus dem Projekt entfernen oder vollständig löschen möchten).Info.plist
Datei.Swift 3 und höher:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
{
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.backgroundColor = UIColor.white
self.window?.makeKeyAndVisible()
return true
}
Swift 2.x:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
{
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.backgroundColor = UIColor.whiteColor()
self.window?.makeKeyAndVisible()
return true
}
Ziel c:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.rootViewController = [[ViewController alloc] init];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
LaunchScreen.xib
den entsprechenden Info.plist
Eintrag. Ohne sie nimmt die App auf größeren iPhones nicht die gesamte Bildschirmgröße ein, was hässlich ist.
Ein einfacher Ansatz wäre die kopieren XCode 5
‚s - Empty Application
VorlageXCode
‘ s - Vorlagen - Verzeichnis.
Sie können XCode 5
die Empty Application
Vorlage von hier herunterladen , entpacken und in das /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application
Verzeichnis kopieren .
PS dieser Ansatz funktioniert auch mit schnell!
Bearbeiten
Wie von @harrisg in einem Kommentar unten vorgeschlagen, können Sie die oben genannte Vorlage in einem ~/Library/Developer/Xcode/Templates/Project Templates/iOS/Application/
Ordner ablegen, damit sie auch dann verfügbar ist, wenn Xcode aktualisiert wird.
Und wenn kein solches Verzeichnis vorhanden ist, müssen Sie möglicherweise diese Verzeichnisstruktur erstellen: Templates/Project Templates/iOS/Application/
in~/Library/Developer/Xcode/
Mit diesem einfachen Ansatz kann ich ein Empty Application
In erstellen XCode 6
. (Screenshot unten angehängt)
Hoffe das hilft!
Es gibt noch ein paar weitere Schritte, die Sie ausführen müssen:
Hier ist ein vollständiges Tutorial:
Fügen Sie die Datei "[App-Name] -Prefix.pch" zu den unterstützenden Dateien mit Inhalten hinzu:
#import <Availability.h>
#ifndef __IPHONE_3_0
#warning "This project uses features only available in iOS SDK 3.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
Fügen Sie "$ SRCROOT / $ PROJECT_NAME / [pch Dateiname]" zu den Projekteinstellungen hinzu -> Build-Einstellungen -> Apple LLVM 6.0 - Sprache -> "Präfix-Header"
Implementierungsmethode application:didFinishLaunchingWithOptions:
:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
Akhils Antwort ist völlig richtig. Für diejenigen von uns, die Swift verwenden, wäre es so:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.backgroundColor = UIColor.whiteColor()
self.window?.makeKeyAndVisible()
return true
}
Xcode 9.3.1 und Swift 4
Gehen Sie danach zu AppDelegate.swift und schreiben Sie in der Funktion didFinishLaunchingWithOptions das nächste:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = UINavigationController(rootViewController: ViewController())
return true
}
Xcode 11.2.1 und Swift 5
Danach werden Schritte zu gehen SceneDelegate und in Funktion Szene schreiben die nächste:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
}
Es gibt noch einen Schritt, den Sie tun müssen:
1) Entfernen Sie den Basisnamen der Haupt-Storyboard-Datei in der Plist-Datei
//AppDelegate.h
@property (strong, nonatomic) UIViewController *viewController;
@property (strong, nonatomic) UINavigationController *nav;
//AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {`enter code here`
// Override point for customization after application launch.
CGRect screenBounds = [[UIScreen mainScreen] bounds];
UIWindow *window = [[UIWindow alloc] initWithFrame:screenBounds];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.nav = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[window setRootViewController: self.nav];
[window makeKeyAndVisible];
[self setWindow:window];
return YES;
}
Update: Swift 5 und iOS 13:
SceneDelegate.swift
und ändern func scene
von:func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let _ = (scene as? UIWindowScene) else { return }
}
zu
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).x
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = ViewController()
self.window = window
window.makeKeyAndVisible()
}
}
Ich habe die ursprüngliche Vorlage für leere Anwendungen, die in Xcode-Versionen vor Xcode 6 verwendet wurde. Ich habe sie hier hochgeladen .
Sie können es entweder herunterladen und manuell in das Xcode-Vorlagenverzeichnis einfügen oder mit dem Paketmanager für Xcode, Alcatraz, installieren . Suchen Sie einfach nach Xcode Empty Application .
Entfernen Sie die Datei Main.storyboard
Dies kann einfach gelöscht werden.
Aktualisieren Sie die Datei ProjectName-Info.plist
Entfernen Sie den Main storyboard base file name
Schlüssel.
Erstellen Sie eine NIB-Datei und verknüpfen Sie sie mit dem View Controller des Projekts
1.Erstellen Sie eine NIB-Datei (Datei -> Neu -> Datei -> Ansicht)
2. Aktualisieren Sie die File's Owner's
Klasse auf den View Controller des Projekts
3.Verbinden Sie den File's Owner's
view
Ausgang mit dem view
Objekt in der Nib-Datei
Aktualisieren Sie den App-Delegaten
1.Importieren Sie die Header-Datei des View Controllers des Projekts
2. Aktualisieren Sie die Anwendungsmethode :didFinishLaunchingWithOptions:
:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
MyViewController *viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
return YES;
}
Für Xcode 8
und Swift 3
.
Löschen Sie einfach die .storyboard
Datei, sie löscht automatisch die entsprechende Referenz aus Ihrem .plist
und AppDelegate.swift
fügen Sie den folgenden Code hinzu.
let initialViewController = UIViewController() initialViewController.view.backgroundColor = .white window = UIWindow(frame: UIScreen.main.bounds) window?.rootViewController = initialViewController window?.makeKeyAndVisible()
Sie können Ihren eigenen benutzerdefinierten ViewCountroller schreiben und diesen AppDelegate.swift
als Ihren verwenden self.window?.rootViewController
. Ersetzen Sie einfach den UIViewController durch Ihren eigenen ViewController im obigen Code.
Ich verwende XCode6 Beta und habe nach einer anderen Lösung für dieses Problem gesucht, indem ich XCode6 Beta eine leere Vorlage von XCode5.xx hinzugefügt habe.
Klicken Sie dazu mit der rechten Maustaste auf XCode5.xx in Anwendungen. Klicken Sie auf "Paketinhalt anzeigen" und kopieren Sie "Leere Anwendung.xctemplate" aus dem angegebenen Pfad
Inhalt / Entwickler / Plattformen / iPhoneOS.platform / Entwickler / Bibliothek / Xcode / Vorlagen / Projektvorlagen / Anwendung
Verlassen Sie nun das Fenster und öffnen Sie den angegebenen Pfad für XCode6
Inhalt / Entwickler / Plattformen / iPhoneOS.platform / Entwickler / Bibliothek / Xcode / Vorlagen / Projektvorlagen / iOS / Anwendung /
Fügen Sie 'Empty Application.xctemplate' in den Anwendungsordner ein. Starten Sie nun XCode6 neu, indem Sie das Projekt beenden und ein neues Projekt erstellen. Sie erhalten die Option "Leere Anwendung".
Wenn ich jetzt ein neues leeres Projekt erstelle, wird automatisch eine .pch-Datei im Projekt hinzugefügt (die wir manuell in XCode6 hinzufügen müssen).
Hoffe es wird funktionieren
Sie können Ihre eigene Projektvorlage für Xcode erstellen. Für Ihre Anfrage können Sie die Vorlage auf dieser Site verwenden:
Andere haben bereits erklärt, wie man das Storyboard loswird, deshalb werde ich dieses hier überspringen. So ziehe ich es in meinem Code mit weniger optionaler Verkettung vor (geschrieben in Swift 3.1):
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let window = UIWindow(frame: UIScreen.main.bounds)
window.backgroundColor = .white
window.rootViewController = MyRootViewController()
window.makeKeyAndVisible()
self.window = window
return true
}
Update auf Xcode 11 und iOS 13. Nachdem Sie alles eingestellt haben, aber immer noch einen schwarzen Bildschirm sehen, wird der Lebenszyklus von UISceneDelegate verwaltet. Wenn Sie ein neues Projekt erstellen, werden UISceneDelegate.m und UISceneDelegate.h automatisch generiert. Um zu den alten Zeiten zurückzukehren, bevor wir uns an UISceneDelegate gewöhnen. Folgende Schritte könnten helfen:
Löschen des Anwendungsszenenmanifests in der Liste.
Löschen Sie Application Scene Manifest.h und Application Scene Manifest.m
Code unter #pragma mark - UISceneSession-Lebenszyklus in APPdelegate.m löschen
@property (starkes, nichtatomares) UIWindow * -Fenster hinzufügen; in APPdelegate.h