Desenvolvendo para iphone e ipad

Documentos relacionados
Desenvolvendo para iphone e ipad

Desenvolvendo para iphone e ipad

Desenvolvendo para iphone e ipad Ricardo R. Lecheta

6ª Edição Ricardo R. Lecheta

Desenvolvendo para iphone e ipad

Programando para. iphone e ipad. Aprenda a construir aplicativos para o ios. André Milani. Novatec

Ricardo R. Lecheta. Novatec

Ademir C. Gabardo. Novatec

Web Interativa com Ajax e PHP

Matheus Marabesi Michael Douglas

Desenvolvendo para iphone e ipad Ricardo R. Lecheta

2ª EDIÇÃO. André Milani. Novatec

Objective-C Fundamental Christopher K. Fairbairn Johannes Fahrenkrug Collin Ruffenach

Luiz Eduardo Borges. Novatec

Desenvolvendo Websites com PHP

Ademir Cristiano Gabardo. Novatec

Osvaldo Santana Thiago Galesi

Blender 3D jogos e animações interativas Allan Brito

Miguel Grinberg. Novatec

André Gugliotti. Novatec

jquery Mobile Desenvolva aplicações web para dispositivos móveis com HTML5, CSS3, AJAX, jquery e jquery UI 2a Edição Maurício Samy Silva Novatec

Sumário. Parte I Elementos essenciais Sobre o autor Sobre o revisor técnico Prefácio... 14

Adriano Pataro. Novatec

Criando Relatórios com PHP Pablo Dall Oglio

jquery Mobile Desenvolva aplicações web para dispositivos móveis com HTML5, CSS3, AJAX, jquery e jquery UI Maurício Samy Silva Novatec

Aprendendo Programação. ios. Alasdair Allan. Novatec

Sumário. Prefácio Capítulo 1 Orientação e primeiras etapas Capítulo 2 Dados: trabalhando com texto e números... 40

William Pereira Alves

Maurício Samy Silva. Novatec

2ª edição Nelson Glauber de Vasconcelos Leal

Jonathan Weber e a equipe da LunaMetrics

Casa do Código Livros para o programador Rua Vergueiro, º andar Vila Mariana São Paulo SP Brasil

Primeiros Passos com o Netduino

AngularJS. Uma abordagem prática e objetiva. Michael Henrique R. Pereira. Novatec

Hélio Engholm Jr. Novatec

Ademir Cristiano Gabardo. Novatec

Sérgio de Oliveira. Novatec

4ª Edição Pablo Dall Oglio

Luiz Carlos Querino Filho

Shyam Seshadri & Brad Green

PHP. Programando com Orientação a Objetos. Pablo Dall Oglio. Novatec

Introdução ao GitHub Peter Bell e Brent Beer

Desenvolvendo para. Windows 8. Aprenda a desenvolver aplicativos para Windows Phone 8 e Windows 8. Ricardo R. Lecheta. Novatec

Aditya Y. Bhargava. Novatec

Raspberry Pi Manual do Usuário

Ryan Mitchell. Novatec

Ademir Ribeiro dos Passos

Indira Knight. Novatec

Editor: Rubens Prates PY Editoração eletrônica: Carolina Kuwabata Revisão gramatical: Patrizia Zagni Capa: Edinei Gonçalves/Carolina Kuwabata

Construindo Aplicações Node com MongoDB e Backbone Mike Wilson

3ª Edição Nilo Ney Coutinho Menezes

Rodrigo de Barros Paes

Desenvolvendo para iphone e ipad

Copyright 2015 da Novatec Editora Ltda.

Robson Santos da Silva

2ª Edição Ricardo R. Lecheta

Ricardo R. Lecheta. Novatec

Guia Prático Richard E. Silverman

JavaScript. de Alto Desempenho. Nicholas C. Zakas. Novatec

Desenvolvendo para iphone e ipad

Novatec Editora Ltda

Aaron Newcomb. Novatec

4ª Edição Revisada e Ampliada Allan Brito

Semmy Purewal. Novatec

Pedro Monteiro da Silva Eleutério Marcio Pereira Machado. Novatec

Benjamin Bengfort Jenny Kim

ADIANTI FRAMEWORK PARA PHP

Google Android para Tablets

ADIANTI FRAMEWORK PARA PHP

Vinícius Manhães Teles prefácio de Kent Beck colaborações especiais de Kent Beck e Robert Mee

Nelson Glauber de Vasconcelos Leal

Shelley Powers. Novatec

Ben Vinegar Anton Kovalyov

Novatec Editora Ltda

Desenvolvimento móvel para IOS - Apple Carga Horária Por Módulo: 16 Horas.

Editor: Rubens Prates Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata Assistente editorial: Priscila A.

Primeiros Passos com Sensores Kimmo Karvinen Tero Karvinen

Ricardo R. Lecheta. Novatec

Jody Culkin e Eric Hagan


Aprenda a Programar com Minecraft

Introdução às. Expressões Regulares. Michael Fitzgerald. Novatec

Edécio Fernando Iepsen

2ª Edição Cláudio Torres

desenvolva aplicações web profissionais com uso dos poderosos recursos de estilização das css3 Maurício Samy Silva

Novatec Editora Ltda

Programando com ASP.NET MVC. Aprenda a desenvolver aplicações web utilizando a arquitetura MVC. Alfredo Lotar. Novatec

Novatec Editora Ltda. 2014, 2016.

4ª Edição Revisada e Ampliada Aurelio Marinho Jargas

Arduino Básico Michael McRoberts

2ª edição. Daniel Adorno Gomes. Novatec

Sumário. 1 Introdução 1. Parte um: A linguagem Objective-C 2 Programação com Objective-C 7. 3 Classes, objetos e métodos 27

Maurício Samy Silva. Novatec

Jessey Bullock Jeff T. Parker

Roni Antônio Mendes. Novatec

Plano de Trabalho Docente 2017 Ensino Técnico

ETAPA 1 INICIANDO A CONFIGURAÇÃO DO SEU APLICATIVO

PhoneGap - Apache Cordova Mobile Framework

Swift - Criação de aplicações móveis para IOS Básico Carga horária: 24 horas

Gilberto Musto. Novatec

Transcrição:

Desenvolvendo para iphone e ipad 3a Edição Ricardo R. Lecheta Novatec

Copyright 2012, 2013, 2014 Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata Capa: Luciane Mori/Carolina Kuwabata ISBN: 978-85-7522-401-4 OG2014117 Histórico de impressões: Novembro/2014 Terceira edição (ISBN: 978-85-7522-401-4) Dezembro/2013 Segunda edição (ISBN: 978-85-7522-384-0) Março/2013 Primeira reimpressão Novembro/2012 Primeira edição (ISBN: 978-85-7522-303-1) Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 E-mail: novatec@novatec.com.br Site: novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec

Sumário Agradecimentos... 15 Sobre o autor... 16 Prefácio... 17 Capítulo 1 Introdução... 23 1.1 Introdução...23 1.2 A linguagem Objective-C...24 1.3 A linguagem Swift...25 1.4 Frameworks Foundation e Cocoa Touch...25 1.5 Xcode...26 1.6 Criando um projeto no Xcode...28 1.7 Projeto dos carros...32 1.8 Links úteis...35 Capítulo 2 Introdução ao Objective-C... 37 2.1 História da linguagem...37 2.2 Xcode...38 2.3 Criando um projeto no Xcode...39 2.4 Entendendo o arquivo main.m e o bloco @autoreleasepool... 41 2.5 A função NSLog e a classe NSString...43 2.6 Criando classes em Objective-C...45 2.7 Métodos com múltiplos parâmetros...53 2.8 Construtores...55 2.9 Declarando Exceptions...57 2.10 Protocolos...59 2.11 Tipo id...64 2.12 Criando propriedades com a notação @property...64 2.13 Métodos privados...68 2.14 Categories...69 2.15 NSArray, NSMutableArray... 71 2.16 NSDictionary e NSMutableDictionary...72 7

8 Desenvolvendo para iphone e ipad 3a Edição 2.17 Comparando objetos...73 2.18 Verificando o tipo do objeto... 74 Capítulo 3 Criando o primeiro aplicativo para iphone... 76 3.1 Criando o primeiro exemplo para iphone com o Xcode...76 3.2 Estrutura de arquivos do projeto...78 3.3 Executando o projeto no simulador do iphone...80 3.4 Criando uma classe do tipo UIViewController...83 3.5 Desenhando a interface gráfica com o Interface Builder (IB)...87 3.6 Classe AppDelegate...89 3.7 File s Owner...93 3.8 Criando a interface gráfica para ipad...93 3.9 Guias para alterar as propriedades dos objetos...101 3.10 Adicionando um botão na interface da tela... 108 3.11 IBOutlet... 109 3.12 IBAction...114 3.13 Auto Layout básico centralizando o label...118 3.14 Customizando o nome do projeto...121 3.15 Exibindo os logs com a classe NSLog... 124 3.16 Ativando o debug... 125 3.17 Onde verificar os erros de compilação... 126 3.18 Onde encontrar a documentação das classes... 127 Capítulo 4 Formulários, componentes e Interface Builder... 129 4.1 Evoluindo o exemplo do Olá Mundo... 129 4.2 Criando o formulário com os campos de texto... 130 4.3 First Responder... 135 4.4 Método touchesbegan... 136 4.5 Protocolo UITextFieldDelegate... 138 4.6 Implementando o protocolo UITextFieldDelegate diretamente no editor visual.143 4.7 UIImageView e a notação @2x... 144 4.8 UISlider e dicas do interface builder... 150 Capítulo 5 Navegação entre telas... 157 5.1 Navegando para outro controller... 157 5.2 Criando o segundo ViewController... 158 5.3 Método presentviewcontroller...161 5.4 Criando uma propriedade com a notação @property... 163 5.5 Mais informações sobre propriedades (nonatomic e strong)... 165 5.6 Voltando para a tela anterior... 167 5.7 Animações com o método presentviewcontroller...168 5.8 UINavigationController... 170 5.9 Customizando o título da Navigation Bar... 175

Sumário 9 5.10 Customizando o título do botão Voltar... 176 5.11 Escondendo a Navigation Bar e Status Bar... 179 5.12 Customizando a aparência da Navigation Bar... 180 5.13 Qual forma de navegação utilizar... 180 5.14 Storyboards...181 Capítulo 6 Introdução ao Swift... 196 6.1 Introdução... 196 6.2 Criando um projeto no Xcode... 196 6.3 A função println()... 198 6.4 Declarando o tipo de uma variável... 199 6.5 Variáveis e constantes (var versus let)... 199 6.6 Variáveis opcionais...200 6.7 Criando classes em Swift...205 6.8 A sintaxe! para declarar variáveis opcionais...206 6.9 Construtores...208 6.10 Construtor de conveniência...209 6.11 Failable Initializers - Construtores que podem retornar nulo... 210 6.12 Métodos e parâmetros...212 6.13 Retorno de um método ou uma função...213 6.14 Protocolos...214 6.15 Tipo id... 216 6.16 Métodos estáticos... 216 6.17 Category...217 6.18 Array...218 6.19 Dictionary...219 6.20 Comparando objetos...220 6.21 Verificando o tipo do objeto...221 Capítulo 7 Tab Bar Controller... 222 7.1 Aplicativo dos carros... 222 7.2 Criando um projeto universal... 222 7.3 Configurando o ícone e a splash da aplicação... 225 7.4 View controllers do projeto...229 7.5 Classe UITabBarController... 232 7.6 Adicionando as marcações de métricas nos arquivos xib... 234 7.7 Mais informações sobre o UITabBarController...236 Capítulo 8 WebView... 238 8.1 A página web com informações sobre o livro...238 8.2 Classe UIWebView... 239 8.3 Criando os outlets do WebView...241 8.4 Exibindo uma página web no WebView... 243

10 Desenvolvendo para iphone e ipad 3a Edição 8.5 Protocolo UIWebViewDelegate...244 8.6 Implementando o protocolo UIWebViewDelegate visualmente...246 8.7 viewdidload versus viewdidappear... 248 8.8 Abrindo uma página local do projeto no WebView... 248 8.9 Interceptando o carregamento das páginas no WebView... 249 Capítulo 9 TableView... 250 9.1 A tela que lista os carros...250 9.2 Criando e ligando os outlets do TableView...251 9.3 Protocolo UITableViewDataSource... 252 9.4 Protocolo UITableViewDelegate...256 9.5 Criando um array de carros para preencher a tabela... 259 9.6 Criando a tela de detalhes do carro... 261 9.7 Criando uma célula customizada para a linha da tabela...264 Capítulo 10 Auto Layout, telas na horizontal e sensores... 271 10.1 Como definir as orientações suportadas no projeto...271 10.2 Auto Layout... 272 10.3 Exemplo de Auto Layout... 275 10.4 Auto Layout no projeto dos Carros...280 10.5 Orientação da tela (vertical e horizontal)...283 10.6 Exibindo uma view diferente conforme a orientação...284 10.7 Definindo as orientações suportadas do view controller...286 10.8 Acelerômetro e CoreMotion...289 10.9 Giroscópio... 297 Capítulo 11 XML e JSON... 302 11.1 Integrando sistemas com XML e JSON... 302 11.2 Copiando os arquivos XML e JSON para o projeto...305 11.3 Classe NSXMLParser...306 11.4 Atualizando a lista de carros para ler do XML...310 11.5 Criando uma imagem a partir de uma URL...313 11.6 Adicionando um Segment Control na tela de lista dos carros...315 11.7 Criando a action para o UISegmentControl...316 11.8 Parser de XML com DOM... 320 11.9 Parser de JSON... 324 Capítulo 12 Web Services e Threads... 327 12.1 Introdução... 327 12.2 Problema de lentidão... 328 12.3 Métodos performselectorinbackground e performselectoronmainthread... 329 12.4 Grand Central Dispatch (GCD)... 330 12.5 NSOperationQueue... 332

Sumário 11 12.6 Classe DownloadImageView para fazer o download da foto... 334 12.7 Requisições HTTP com a classe NSURLSession... 339 12.8 Métodos assíncronos...344 12.9 Inserindo um botão de atualizar na navigation bar... 347 12.10 Como chamar um web service WSDL...348 Capítulo 13 Persistência de dados... 350 13.1 Salvando dados com a classe NSUserDefaults... 350 13.2 Métodos da classe NSUserDefaults... 352 13.3 Salvando o tipo de carro nas preferências do usuário... 353 13.4 Escrita e leitura de arquivos... 355 13.5 Banco de dados SQLite... 357 13.6 Adicionando a biblioteca do SQLite no projeto...360 13.7 Configurando as classes utilitárias para o SQLite... 361 13.8 A classe CarroDB para salvar carros na tabela do SQLite...369 13.9 Salvando os carros no banco depois de consultar o web service... 372 13.10 Forçando a consulta dos carros pelo web service... 375 13.11 Atualizar os dados do carro ou excluir do banco de dados... 376 13.12 Core Data... 379 13.13 Preparando o projeto para utilizar Core Data...385 13.14 Criando a classe de persistência...387 Capítulo 14 Mapas e GPS... 392 14.1 Introdução a mapas e GPS... 392 14.2 Adicionando os frameworks Map Kit e Core Location no projeto... 392 14.3 Preparando o projeto dos carros para exibir um mapa... 393 14.4 Exibindo o mapa na coordenada desejada...400 14.5 Marcando um local do mapa com um alfinete...405 14.6 Lendo as coordenadas GPS com o framework Core Location...408 14.7 Calculando distâncias...414 14.8 Desenhando uma rota...414 14.9 Geocoding... 415 Capítulo 15 Multimídia... 418 15.1 Exibindo um vídeo no aplicativo com a classe UIWebView...418 15.2 Adicionando o framework Media Player no projeto... 424 15.3 Criando a classe VideoUtil... 425 15.4 Exibindo um vídeo no aplicativo com a classe MPMoviePlayerController..427 15.5 HTTP Live Streaming...429 15.6 Reproduzindo um arquivo de vídeo local do projeto...430 15.7 Monitorando o início e o fim do vídeo com notificações...430 15.8 Reproduzindo o vídeo em tela cheia... 432 15.9 Abrindo o vídeo com o player nativo... 434

12 Desenvolvendo para iphone e ipad 3a Edição 15.10 Controlando a reprodução do vídeo: pause e stop... 434 15.11 Reproduzindo e gravando música...436 15.12 Acessando a galeria de fotos pelo aplicativo... 441 15.13 Tirando uma foto e instalando o projeto no iphone...446 15.14 Abrindo documentos no ibooks... 447 Capítulo 16 ipad... 451 16.1 Projeto universal...451 16.2 Verificando se o aparelho é iphone ou ipad... 454 16.3 UISplitViewController... 455 16.4 Utilizando o UISplitViewController no projeto dos carros... 461 16.5 Exercício: customizar a tela de detalhes para ipad...465 16.6 UIPopoverController... 467 16.7 Layout vertical no ipad com o UIPopoverController...469 Capítulo 17 Animações, closures e blocos... 473 17.1 Core Animation... 473 17.2 Criando um contexto para executar uma animação... 473 17.3 As principais propriedades que podem ser animadas... 475 17.4 Configurando os parâmetros da animação... 475 17.5 Projeto de exemplo com animações... 477 17.6 Animação de transparência alpha... 479 17.7 As estruturas CGRect, CGPoint e CGSize... 481 17.8 Diferença entre as propriedades frame e bounds...483 17.9 Movendo uma view...483 17.10 Utilizando transformações para mover uma view...486 17.11 Redimensionando uma view...489 17.12 Rotacionando uma view...491 17.13 Monitorando o final da animação... 493 17.14 Introdução a blocos (Objective-C)...494 17.15 Blocos com retorno e argumentos...495 17.16 Passando blocos como argumentos para métodos...496 17.17 Animação com blocos em Objective-C... 497 17.18 Introdução a closures (Swift)...500 17.19 Closures com retorno e argumentos... 501 17.20 Passando closures como argumentos para métodos... 501 17.21 Animação com closures em Swift...502 Capítulo 18 Views, Touch, Gestos, Quartz 2D e SpriteKit... 504 18.1 Criando uma view customizada...504 18.2 Quartz 2D...505 18.3 Criando um projeto com Quartz... 507 18.4 Desenhando com Quartz...513

Sumário 13 18.5 Tratando eventos de touch... 523 18.6 Gestos com a classe UIGestureRecognizer... 525 18.7 Dynamic Behavior... 528 18.8 SpriteKit...531 Capítulo 19 Gerenciamento de memória com Objective-C... 538 19.1 Gerenciamento de memória manual... 538 19.2 Criando o projeto com o ARC desligado... 539 19.3 Métodos release e dealloc...543 19.4 Autorelease...543 19.5 O erro EXC_BAD_ACCESS...546 19.6 Gerenciamento de memória com retain e release... 547 19.7 Quando é necessário utilizar o método retain...549 19.8 Demonstrando um memory leak... 553 19.9 Criando propriedades com a notação @property (revisão)... 556 19.10 Resumo... 558 19.11 NSArray, NSMutableArray e mais detalhes sobre o gerenciamento de memória...560 19.12 NSDictionary e NSMutableDictionary...562 19.13 ARC (Automatic Reference Counting)...563 19.14 Migrando um projeto dos carros para o ARC...565 Capítulo 20 App Store e anúncios... 569 20.1 App Store...569 20.2 ios Dev Center... 572 20.3 Certificates, Identifiers & Profiles... 573 20.4 Criando o certificado de desenvolvedor... 576 20.5 Configurando o device para desenvolvimento... 579 20.6 App ID... 581 20.7 Provisioning Profile...583 20.8 Executando o projeto diretamente no aparelho...588 20.9 Instalando outros projetos no device...589 20.10 Gerando receitas com anúncios iad...590 20.11 itunes Connect preparando o projeto para publicar na App Store... 594 20.12 Publicando na App Store...599 Capítulo 21 Local e Push Notifications... 603 21.1 NSNotificationCenter...603 21.2 Número de notificação no logo do aplicativo...605 21.3 Local Notifications...606 21.4 Remote Notifications... 611 21.5 Código para receber uma Remote Notification (push)...619 21.6 Servidor para enviar mensagens por push...621 21.7 Onde obter mais informações... 624