Xcode6
удалил Empty Application
шаблон Empty Application
при создании нового проекта. Как мы можем создать пустое приложение (без Storyboard) в Xcode6
и выше, как в более ранних версиях?
Как создать пустое приложение в Xcode без раскадровки
Ответ 1
В XCode6
и более XCode6
версиях нет опции для непосредственного создания пустого приложения, как в XCode5
и более ранних XCode5
. Но все же мы можем создать приложение без Storyboard
, выполнив следующие действия:
- Создать приложение с
Single View Application
. - Удалите
Main.storyboard
иLaunchScreen.xib
(выберите их, щелкните правой кнопкой мыши и выберите либо удалить их из проекта, либо удалить их полностью). - Удалите записи "Основное имя файла основной раскадровки" и "Основное имя файла интерфейса экрана запуска" в файле
Info.plist
. - Откройте AppDelegate.m и отредактируйте applicationDidFinishLaunchingWithOptions, чтобы он выглядел следующим образом:
Swift 3 и выше:
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
}
Objective-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;
}
Ответ 2
Простым подходом было бы скопировать шаблон XCode 5
Empty Application
в каталог XCode
templates.
Вы можете скачать шаблон XCode 5
Empty Application
из здесь, затем разархивируйте его и скопируйте в /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application
.
P.S этот подход работает и с быстрым!
Edit
Как было предложено @harrisg в комментарии ниже, вы можете разместить вышеупомянутый шаблон в папке ~/Library/Developer/Xcode/Templates/Project Templates/iOS/Application/
, чтобы он мог быть доступен, даже если Xcode обновляется.
И если такого каталога нет, вам может понадобиться создать эту структуру каталогов: Templates/Project Templates/iOS/Application/
в ~/Library/Developer/Xcode/
Используя этот простой подход, я могу создать Empty Application
в XCode 6
. (Снимок экрана прилагается ниже)
Надеюсь, это поможет!
Ответ 3
Есть еще несколько шагов, которые вам нужно сделать:
- Чтобы добавить файл префикса. (Если вам это нужно)
- Чтобы добавить образ запуска по умолчанию, в противном случае размер приложения будет 320x480 на iPhone 5.
Итак, вот полный учебник:
- удалить файл Main.storyboard
- удалить файл LaunchScreen.xib
- удалить свойство "Основная база данных основного файла" в Info.plist
- удалить свойство "Запустить имя файла интерфейса экрана" в Info.plist
-
добавить файл [app name] -Prefix.pch для поддержки файлов с содержимым:
#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
-
добавить "$ SRCROOT/$PROJECT_NAME/[имя файла pch]" для настройки проекта → Настройки сборки → Apple LLVM 6.0 - Язык → "Заголовок префикса"
- добавить "ДА" для настройки проекта → Настройки сборки → Apple LLVM 6.0 - Язык → "Прекомпиляция заголовка префикса"
- откройте "Image.xcassets" и добавьте LaunchImage
- создайте проект, затем появится предупреждение о отсутствующем образце запуска по умолчанию, просто нажмите на предупреждение и выберите, чтобы добавить значение по умолчанию, это добавит "Default-568h @2x" ИЛИ - Если вы хотите использовать брызгообразные изображения из "Images.xcassets", перейдите к настройкам проекта → TARGETS → General → в "Launch Images Source" выберите использование каталога активов, он создаст новый, вы можете выберите тогда, который будет использоваться в качестве каталога активов из существующих.
-
реализовать метод
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;
Ответ 4
Ответ Ахильса полностью верен. Для тех из нас, кто использует Swift, это будет так: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
}
Ответ 5
Есть еще один шаг, который вам нужно сделать:
1) удалить основное имя файла основной раскадровки в файле plist
//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;
}
Ответ 6
У меня есть оригинальный шаблон Empty Application, который использовался в версиях Xcode до Xcode 6. Я загрузил его здесь.
Вы можете загрузить его и вставить в каталог шаблона Xcode вручную или установить его с помощью диспетчера пакетов для Xcode, Alcatraz. Просто найдите Xcode Empty Application.
Ответ 7
Удалить файл Main.storyboard
Это можно просто удалить.
Обновить файл ProjectName-Info.plist
Удалите клавишу Main storyboard base file name
.
Создайте файл nib и ссылку на контроллер представления проектов
1.Создайте файл nib (Файл → Новый → Файл → Просмотр)
2.Учитайте класс File Owner's
для любого вида проектов
контроллер называется
3. Поместите вывод File Owner's
view
в объект view
в файле nib
Обновить делегат приложения
1.Введите файл заголовков контроллеров проектов
2.Удалить метод приложения :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;
}
Ответ 8
Для Xcode 8
и Swift 3
.
Просто удалите файл .storyboard
, он автоматически удалит соответствующую ссылку из вашего .plist
и в вашем AppDelegate.swift
добавит следующий код.
let initialViewController = UIViewController() initialViewController.view.backgroundColor = .white window = UIWindow(frame: UIScreen.main.bounds) window?.rootViewController = initialViewController window?.makeKeyAndVisible()
Вы можете написать свой собственный ViewCountroller и использовать его в AppDelegate.swift
как ваш self.window?.rootViewController
, просто замените UIViewController своим собственным ViewController в приведенном выше коде.
Ответ 9
Xcode 9.3.1 и Swift 4
- Прежде всего вам необходимо удалить Main.storyboard в меню навигатора проекта.
- Чем удалить строку Основное имя файла раскадровки в Info.plist.
- И не забудьте удалить основной интерфейс ячейки (просто удалите основной) в вашей цели проекта - Общие - Информация о развертывании
-
После этого перейдите в AppDelegate.swift и в функции didFinishLaunchingWithOptions напишите следующее:
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 }
Ответ 10
Я использую XCode6 Beta, и я искал другое решение этой проблемы, добавив пустой шаблон из XCode5.x.x в XCode6 Beta.
Для этого щелкните правой кнопкой мыши по XCode5.x.x в приложениях, нажмите "Показать содержимое пакета" и скопируйте "Empty Application.xctemplate" из заданного пути
Содержание/Разработчик/Платформы/iPhoneOS.platform/Разработчик/Library/Xcode/Шаблоны/Шаблоны проектов/Приложение
Теперь закройте окно и откройте данный путь для XCode6
Содержание/Разработчик/Платформы/iPhoneOS.platform/Разработчик/Library/Xcode/Шаблоны/Шаблоны проектов/iOS/Приложение/
Вставить 'Empty Application.xctemplate' внутри папки приложения. Теперь перезапустите XCode6, оставив и создав новый проект. Вы получите опцию "Пустое приложение".
Теперь, когда я создаю новый пустой проект, файл .pch автоматически добавляется в проект (который мы должны добавить вручную в XCode6)
Надеюсь, что это сработает
Ответ 11
Обновление: Swift 5 и iOS 13:
- Создайте приложение с одним представлением.
- Удалить Main.storyboard (щелкните правой кнопкой мыши и удалите).
- Удалите "Название раскадровки" из конфигурации сцены по умолчанию в файле Info.plist:
- Откройте
SceneDelegate.swift
и изменитеfunc scene
с:
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 }
}
в
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()
}
}
Ответ 12
Да, или просто используйте одну из предыдущих бета-версий, чтобы создать ее, и продолжайте в последней версии после.
Ответ 13
Вы можете создать свой собственный шаблон проекта для Xcode. Для вашего запроса вы можете использовать шаблон на этом сайте:
Ответ 14
Другие уже объяснили, как избавиться от раскадровки, поэтому я пропущу здесь. Вот как я предпочитаю делать это в своем коде с менее необязательной цепочкой (написанной в 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
}