Xcode6
видалив Empty Application
шаблон під час створення нового проекту. Як ми можемо створити порожній додаток (без аркуша розкадровки) в Xcode6
і вище, як у попередніх версіях?
Xcode6
видалив Empty Application
шаблон під час створення нового проекту. Як ми можемо створити порожній додаток (без аркуша розкадровки) в Xcode6
і вище, як у попередніх версіях?
Відповіді:
Немає варіантів у XCode6
та вище версії для прямого створення порожнього додатка як у XCode5
попередній, так і в попередній версії . Але все-таки ми можемо створити додаток без Storyboard
наступних кроків:
Single View Application
.Main.storyboard
і LaunchScreen.xib
(виберіть їх, клацніть правою кнопкою миші та виберіть або видалити їх із проекту, або видалити їх повністю).Info.plist
.Швидкість 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
}
Швидкий 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
}
Завдання-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
і відповідний Info.plist
запис. Без цього додаток не буде приймати весь розмір екрана на більших iPhone, що некрасиво.
Простий підхід був би скопіювати XCode 5
«и Empty Application
шаблон для XCode
" и шаблонів каталогу.
Ви можете завантажити XCode 5
«s Empty Application
шаблон з тут , а потім розпакувати його і скопіювати в /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application
каталог.
PS Цей підхід також працює швидко!
Змінити
Як запропонував @harrisg в коментарі нижче, ви можете помістити вищезгаданий шаблон у ~/Library/Developer/Xcode/Templates/Project Templates/iOS/Application/
папку, щоб він був доступний, навіть якщо Xcode оновлюється.
І якщо такої директорії немає, можливо, вам доведеться створити цю структуру каталогів: Templates/Project Templates/iOS/Application/
в~/Library/Developer/Xcode/
Використовуючи цей простий підхід я в змозі створити Empty Application
ін XCode 6
. (Знімок екрана додається нижче)
Сподіваюся, це допомагає!
Вам потрібно виконати ще кілька кроків:
Отже, ось повний підручник:
додайте файл "[назва програми] -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 - Мова -> "Заголовок префікса"
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;
Відповідь Ахілса абсолютно правильна. Для тих, хто використовує 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
}
Xcode 9.3.1 і Swift 4
Після цього перейдіть до 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
}
Xcode 11.2.1 і Swift 5
Після цього перейдіть до SceneDelegate і на сцені функції напишіть наступне:
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()
}
Ще один крок, який потрібно зробити:
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;
}
Оновлення: Swift 5 та iOS 13:
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()
}
}
У мене є оригінальний шаблон «Порожня програма», який використовувався у версіях Xcode до Xcode 6. Я завантажив його сюди .
Ви можете його завантажити або вставити в каталог шаблонів Xcode вручну або встановити за допомогою менеджера пакунків для Xcode, Alcatraz . Просто знайдіть Xcode Empty Application .
Видаліть файл Main.storyboard
Це можна просто видалити.
Оновіть файл ProjectName-Info.plist
Вийміть Main storyboard base file name
ключ.
Створіть файл nib та зв’яжіть його з контролером перегляду проекту
1.Створіть файл nib (Файл -> Створити -> Файл -> Переглянути)
2.Оновіть File's Owner's
клас до будь-якого виклику контролера подання проектів
3.Зв’яжіть File's 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;
}
Для 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 у наведеному вище коді.
Я використовую XCode6 Beta і шукав інше рішення цієї проблеми, додавши порожній шаблон з XCode5.xx в бета-версію XCode6.
Для цього клацніть правою кнопкою миші на XCode5.xx у програмах, натисніть «Показати вміст пакета» та скопіюйте «Порожній додаток.xctemplate» із заданого шляху
Зміст / Розробник / Платформи / iPhoneOS.platform / Розробник / Бібліотека / Xcode / Шаблони / Шаблони проектів / Застосування
Тепер закрийте вікно та відкрийте заданий шлях для XCode6
Зміст / Розробник / Платформи / iPhoneOS.platform / Розробник / Бібліотека / Xcode / Шаблони / Шаблони проектів / iOS / Приклад /
Вставте "Порожній Application.xctemplate" всередину папки програми. Тепер перезапустіть XCode6, закривши і створити новий проект. Ви отримаєте опцію "Порожня програма".
Тепер, коли я створюю новий проект Empty, у проект автоматично додається .pch-файл (який ми маємо додати вручну в XCode6)
Сподіваюся, це спрацює
Ви можете створити власний шаблон проекту для Xcode. Для вашого запиту ви можете використовувати шаблон на цьому веб-сайті:
Інші вже пояснили, як позбутися розгортки, тому я пропускаю тут цю. Ось як я вважаю за краще це робити в своєму коді з менш необов'язковим ланцюжком (написано в 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
}
оновлення для Xcode 11 та ios 13. Після того, як у вас все встановлено, але ви все ще побачите чорний екран, це тому, що життєвий цикл обробляється UISceneDelegate, і коли ви створюєте новий проект, він автоматично генерує UISceneDelegate.m та UISceneDelegate.h. Щоб повернутися до старих часів, перш ніж ми звикнемо до UISceneDelegate. Наступні кроки можуть допомогти:
видалити Маніфест сцени програми в плісті.
видалити Manifest.h Scene Manifest.h та Manifest
видалити код під позначкою #pragma - життєвий цикл UISceneSession в APPdelegate.m
Додати @property (сильне, неатомічне) вікно UIW * *; в APPdelegate.h