Xcode6
removeu o Empty Application
modelo ao criar um novo projeto. Como podemos criar um aplicativo vazio (sem Storyboard) dentro Xcode6
e acima, como nas versões anteriores?
Xcode6
removeu o Empty Application
modelo ao criar um novo projeto. Como podemos criar um aplicativo vazio (sem Storyboard) dentro Xcode6
e acima, como nas versões anteriores?
Respostas:
Não há opção nas XCode6
versões e acima para criar diretamente um Aplicativo Vazio como em XCode5
e anteriores. Mas ainda podemos criar um aplicativo sem Storyboard
seguir estas etapas:
Single View Application
.Main.storyboard
e LaunchScreen.xib
(selecione-os, clique com o botão direito do mouse e escolha removê-los do projeto ou excluí-los completamente).Info.plist
arquivo.Swift 3 e acima:
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
}
Objetivo-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
e a Info.plist
entrada correspondente . Sem ele, o aplicativo não ocupará todo o tamanho da tela em iPhones maiores, o que é feio.
Uma abordagem simples seria a de copiar o XCode 5
's Empty Application
modelo para XCode
' s modelos de diretório.
Você pode fazer XCode 5
o download do Empty Application
modelo aqui , descompacte-o e copie-o para o /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application
diretório.
PS essa abordagem funciona com rapidez também!
Editar
Conforme sugerido por @harrisg em um comentário abaixo, você pode colocar o modelo acima mencionado na ~/Library/Developer/Xcode/Templates/Project Templates/iOS/Application/
pasta para que ele esteja disponível mesmo que o Xcode seja atualizado.
E se não houver esse diretório presente, talvez seja necessário criar esta estrutura de diretório: Templates/Project Templates/iOS/Application/
em~/Library/Developer/Xcode/
Usando esta abordagem simples, sou capaz de criar um Empty Application
arquivo XCode 6
. (Captura de tela anexada abaixo)
Espero que isto ajude!
Há mais algumas etapas que você precisa executar:
Então, aqui está um tutorial completo:
adicione o arquivo "[app name] -Prefix.pch" aos arquivos de suporte com conteúdo:
#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
adicione "$ SRCROOT / $ PROJECT_NAME / [nome do arquivo pch]" às configurações do projeto -> Configurações de compilação -> Apple LLVM 6.0 - Idioma -> "Prefixo do cabeçalho"
implementar application:didFinishLaunchingWithOptions:
método:
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;
A resposta de Akhils está totalmente correta. Para aqueles de nós que usam o Swift, seria assim:
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 e Swift 4
Após essas etapas, vá para AppDelegate.swift e, na função didFinishLaunchingWithOptions, escreva o seguinte:
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 e Swift 5
Após essas etapas, vá para SceneDelegate e, na cena da função , escreva o seguinte:
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()
}
Há mais uma etapa que você precisa executar:
1) remova o nome da base do arquivo principal do storyboard no arquivo 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;
}
Atualização: Swift 5 e iOS 13:
SceneDelegate.swift
e mude func scene
de: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 }
}
para
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()
}
}
Eu tenho o modelo original de Aplicativo Vazio que foi usado nas versões do Xcode anteriores ao Xcode 6. Fiz o upload aqui .
Você pode baixá-lo e colá-lo no diretório de modelos do Xcode manualmente ou instalá-lo usando o gerenciador de pacotes do Xcode, Alcatraz . Basta procurar o aplicativo Xcode Empty .
Remova o arquivo Main.storyboard
Isso pode ser simplesmente excluído.
Atualize o arquivo ProjectName-Info.plist
Retire a Main storyboard base file name
chave.
Crie um arquivo de ponta e vincule ao controlador de visualização do projeto
1.Crie um arquivo de ponta (Arquivo -> Novo -> Arquivo -> Exibir)
2.Atualize a File's Owner's
classe para o nome do controlador de exibição do projeto
3.Ligue a File's Owner's
view
tomada ao view
objeto no arquivo da ponta
Atualize o delegado do aplicativo
1.Importe o arquivo de cabeçalho do controlador de exibição do projeto
2.Atualize o :didFinishLaunchingWithOptions:
método de aplicação :
- (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;
}
Para Xcode 8
e Swift 3
.
Apenas exclua o .storyboard
arquivo, ele excluirá automaticamente a referência correspondente do seu .plist
e no seu AppDelegate.swift
adicione o seguinte código.
let initialViewController = UIViewController() initialViewController.view.backgroundColor = .white window = UIWindow(frame: UIScreen.main.bounds) window?.rootViewController = initialViewController window?.makeKeyAndVisible()
Você pode escrever seu próprio ViewCountroller personalizado e usá-lo AppDelegate.swift
como seu self.window?.rootViewController
, basta substituir o UIViewController pelo seu próprio ViewController no código acima.
Estou usando o XCode6 Beta e procurei outra solução desse problema adicionando o modelo Vazio do XCode5.xx ao XCode6 Beta.
Para isso, clique com o botão direito do mouse em XCode5.xx em Applications, clique em 'Show Package Content' e copie 'Empty Application.xctemplate' do caminho especificado
Conteúdo / Desenvolvedor / Plataformas / iPhoneOS.platform / Desenvolvedor / Biblioteca / Xcode / Modelos / Modelos de Projeto / Aplicativo
Agora saia da janela e abra o caminho especificado para o XCode6
Conteúdo / Desenvolvedor / Plataformas / iPhoneOS.platform / Desenvolvedor / Biblioteca / Xcode / Modelos / Modelos de Projeto / iOS / Aplicativo /
Cole 'Empty Application.xctemplate' dentro da pasta Application. Agora reinicie o XCode6 fechando e crie um novo projeto. Você receberá a opção 'Aplicativo vazio'.
Agora, quando estou criando um novo projeto Vazio, um arquivo .pch é adicionado automaticamente no projeto (que precisamos adicionar manualmente no XCode6)
Espero que funcione
Você pode criar seu próprio modelo de projeto para o Xcode. Para sua solicitação, você pode usar o modelo neste site:
Outros já explicaram como se livrar do storyboard, então vou pular esse aqui. É assim que eu prefiro fazê-lo no meu código com menos encadeamento opcional (escrito em 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
}
atualização no Xcode 11 e no ios 13. Depois de definir tudo, mas ainda ver uma tela preta, é porque o ciclo de vida é tratado pelo UISceneDelegate e quando você cria um novo projeto, ele gera automaticamente UISceneDelegate.m e UISceneDelegate.h. Para voltar aos velhos tempos antes de nos acostumarmos com o UISceneDelegate. Os seguintes passos podem ajudar:
excluir Application Scene Manifest em plist.
excluir Application Scene Manifest.h e Application Scene Manifest.m
excluir código na marca #pragma - ciclo de vida do UISceneSession no APPdelegate.m
adicione @property (forte, não atômica) janela UIWindow *; em APPdelegate.h