Desenvolvendo para iphone e ipad



Documentos relacionados
Desenvolvendo para iphone e ipad Ricardo R. Lecheta

Desenvolvendo para iphone e ipad

Desenvolvendo para iphone e ipad

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

Desenvolvendo para iphone e ipad

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

Luiz Carlos Querino Filho

Ricardo R. Lecheta. Novatec

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

Google Android para Tablets

6ª Edição Ricardo R. Lecheta

Desenvolvendo para iphone e ipad

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

Nelson Glauber de Vasconcelos Leal

Desenvolvendo para iphone e ipad

Google Android para Tablets

Ademir C. Gabardo. Novatec

Google Android para Tablets

Desenvolvendo Websites com PHP

Criando Aplicações PHP com. Zend e Dojo. Flávio Gomes da Silva Lisboa. Novatec

Jonathan Stark Brian Jepson

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

Zend. Framework. Componentes Poderosos para PHP. Flávio Gomes da Silva Lisboa. Novatec

Ricardo R. Lecheta. Novatec

Hélio Engholm Jr. Novatec

Adail Henrique Spínola Horst Aécio dos Santos Pires André Luis Boni Déo. Novatec

Excel Avançado. 2ª Edição. Antonio Fernando Cinto Wilson Moraes Góes. Novatec

Aprendendo Cocoa com Objective-C Paris Buttfield-Addison Jonathon Manning

Lojas Virtuais com. Magento. André Nobrega Gugliotti. Novatec

Brandon Rhodes John Goerzen

David Hows Peter Membrey Eelco Plugge

Criando Aplicações Gráficas com PHP

Copyright 2008, 2013 da Novatec Editora Ltda.

Wilson Moraes Góes. Novatec

Wilson Moraes Góes. Novatec

JQuery. A Biblioteca do Programador JavaScript. 3ª Edição Revisada e ampliada. Maurício Samy Silva. Novatec

Criando Relatórios com PHP

Crie Seu Próprio Site

Desenvolvimento de Grandes Aplicações Web

Desenvolvendo Websites com PHP

Novatec Editora Ltda. [2014].

Camila Porto. Novatec

Google Analytics Justin Cutroni

Novatec Editora Ltda

Service Desk Corporativo

Ricardo Kléber M. Galvão. Novatec

MARKETING DIGITAL NA ERA. Martha Gabriel CONCEITOS, PLATAFORMAS E ESTRATÉGIAS. Novatec

Laboratórios de Tecnologias. Cisco. em Infraestrutura de Redes. Samuel Henrique Bucke Brito. Novatec

Pramod J. Sadalage Martin Fowler

Julia Elman e Mark Lavin. Novatec

como acabar com sua em apenas 140 caracteres Carolina Lima Novatec

Ricardo Lino Olonca. Novatec

Scrum em Ação. Gerenciamento e Desenvolvimento Ágil de Projetos de Software. Andrew Pham Phuong-Van Pham. Novatec

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

PDF Explicado John Whitington

marketing ágil Utilização de Metodologias Ágeis em Projetos de Marketing Michelle Accardi-Petersen Novatec

2ª Edição Alexandre Keller

Autor/Bolsista: Régis Magno Zangirolami

Autor/Bolsista: Régis Magno Zangirolami Caio Cesar Almeida Pegoraro

CONTEÚDO (técnico) COMPLETO DO TREINAMENTO INTENSIVO PARA ANDROID Universidade Android

Adrian Mejia. Novatec

João Eriberto Mota Filho

Interacção com o Utilizador

Ademir C. Gabardo. Novatec

Persistência. Desenvolvimento em ios. Copyright 2011 Catarina Silva DEI ESTG - Instituto Politécnico de Leiria

Aprendendo. Unix no OS X. Mountain Lion. Mergulhando no Terminal e no Shell. Dave Taylor. Novatec

Rails 3 Básico Cloves Carneiro Jr. Rida Al Barazi

Programação Java. em Ambiente Distribuído. Ênfase no Mapeamento Objeto-Relacional com JPA, EJB e Hibernate. Douglas Rocha Mendes.

Design Centrado no Usuário

Paulo Strelczuk. Novatec

André Gugliotti. Novatec

Defenda sua base com circuitos simples, Arduino e Raspberry Pi

Primeiros Passos com o Raspberry Pi

Ricardo Lino Olonca. Novatec

Harrison Kinsley Will McGugan

Versão /10. Xerox ColorQube 9301/9302/9303 Serviços de Internet

Josh Pauli Revisão técnica Scott White. Novatec

Plano de Aula - Windows 8 - cód Horas/Aula

Keith Wood. Apresentação de Dave Methvin. Novatec

Guia do Programador Joel Saade

Plano de Trabalho Docente Ensino Técnico

Padrões de Projeto em PHP

NFePackSaaS GUIA DO USUÁRIO

Laboratórios de Tecnologias. Cisco. em Infraestrutura de Redes. 2a Edição. Samuel Henrique Bucke Brito. Novatec

Manual Vivo Sync. Manual do Usuário. Versão Copyright Vivo

Manual. Roteador - 3G Portátil

Manual Backup Online. Manual do Usuário. Versão Copyright Backup Online

Manual Vivo Sync. Manual do Usuário. Versão Copyright Vivo

ALUNES MANUAL DO USUÁRIO. Guia rápido Alunes

Adail Henrique Spínola Horst Aécio dos Santos Pires André Luis Boni Déo. Novatec

Mapas. Desenvolvimento em ios. Copyright 2011 Catarina Silva DEI ESTG - Instituto Politécnico de Leiria

Web Interativa com Ajax e PHP

A Arte de SEO. Eric Enge, Stephan Spencer, Jessie Stricchiola e Rand Fishkin Introdução de John Battelle. Novatec

Manual TIM PROTECT BACKUP. Manual do Usuário. Versão Copyright TIM PROTECT BACKUP

TDC desenvolvimento. para iphone. Helder da Rocha

Os aplicativos da Godiva Apps, podem ser customizados para qualquer tipo de negócio.

Obrigado por comprar este tablet. Por favor, leia e guarde todas as instruções de operação antes de utilizar o aparelho.

Transcrição:

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

Copyright 2012, 2013 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-384-0 Histórico de impressões: Dezembro/2013 Segunda edição 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 Fax: +55 11 2950-8869 E-mail: novatec@novatec.com.br Site: novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec MP20131119

Sumário Agradecimentos... 15 Sobre o autor... 16 Prefácio... 17 Capítulo 1 Introdução... 24 1.1 Introdução...24 1.2 A linguagem Objective-C...25 1.3 Frameworks Foundation e Cocoa Touch...25 1.4 Xcode...26 1.5 Criando um projeto no Xcode...29 1.6 Projeto dos carros...33 1.7 Links úteis...36 Capítulo 2 Introdução ao Objective-C... 38 2.1 História da linguagem...38 2.2 Xcode...39 2.3 Criando um projeto no Xcode...40 2.4 Entendendo o arquivo main.m e o bloco @autoreleasepool...42 2.5 A função NSLog e a classe NSString...44 2.6 Criando classes em Objective-C...47 2.7 Métodos com múltiplos parâmetros...54 2.8 Construtores...56 2.9 Declarando Exceptions...59 2.10 Protocolos... 61 2.11 Tipo id...65 2.12 Criando propriedades com a notação @property...66 2.13 Métodos privados...69 2.14 Categories...70 2.15 NSArray, NSMutableArray...72 2.16 NSDictionary e NSMutableDictionary...73 2.17 Comparando objetos... 74 7

8 Desenvolvendo para iphone e ipad 2a Edição Capítulo 3 Criando o primeiro aplicativo para iphone... 77 3.1 Criando o primeiro exemplo para iphone com o Xcode...77 3.2 Estrutura de arquivos do projeto...79 3.3 Executando o projeto no simulador do iphone...82 3.4 Criando uma classe do tipo UIViewController...84 3.5 Desenhando a interface gráfica com o Interface Builder (IB)...88 3.6 Classe AppDelegate...89 3.7 File s Owner...93 3.8 Criando a interface gráfica para ipad...94 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...115 3.13 Auto Layout básico centralizando o label...118 3.14 Customizando o nome do projeto... 122 3.15 Exibindo os logs com a classe NSLog... 125 3.16 Ativando o debug... 126 3.17 Onde verificar os erros de compilação... 127 3.18 Onde encontrar a documentação das classes... 128 Capítulo 4 Formulários, componentes e Interface Builder... 130 4.1 Evoluindo o exemplo do Olá Mundo... 130 4.2 Criando o formulário com os campos de texto...131 4.3 First Responder... 136 4.4 Método touchesbegan... 138 4.5 Protocolo UITextFieldDelegate... 139 4.6 Implementando o protocolo UITextFieldDelegate diretamente no editor visual.145 4.7 UIImageView e a notação @2x... 146 4.8 UISlider e dicas do interface builder... 152 Capítulo 5 Navegação entre telas... 160 5.1 Navegando para outro controller... 160 5.2 Criando o segundo ViewController... 160 5.3 Método addsubview... 164 5.4 Criando uma propriedade com a notação @property... 167 5.5 Mais informações sobre propriedades (nonatomic e strong)... 169 5.6 Voltando para a tela anterior...171 5.7 Método presentviewcontroller... 173 5.8 UINavigationController... 177 5.9 Customizando o título da Navigation Bar... 182 5.10 Customizando o título do botão voltar... 183 5.11 Escondendo a Navigation Bar e Status Bar... 185

Sumário 9 5.12 Customizando a aparência da Navigation Bar... 186 5.13 Qual forma de navegação utilizar... 187 5.14 Storyboards... 188 Capítulo 6 Tab Bar Controller... 203 6.1 Aplicativo dos carros...203 6.2 Criando um projeto universal...203 6.3 Configurando o ícone e a splash da aplicação...208 6.4 View controllers do projeto... 210 6.5 Classe UITabBarController...213 6.6 Adicionando as marcações de métricas nos arquivos xib... 216 6.7 Mais informações sobre o UITabBarController...218 Capítulo 7 WebView... 220 7.1 A página web com informações sobre o livro...220 7.2 Classe UIWebView...220 7.3 Criando os outlets do WebView... 222 7.4 Exibindo uma página web no webview... 224 7.5 Protocolo UIWebViewDelegate...226 7.6 Implementando o protocolo UIWebViewDelegate visualmente...229 7.7 Diretiva #pragma mark... 230 7.8 viewdidload vs viewdidappear...231 7.9 Abrindo uma página local do projeto no WebView... 232 7.10 Interceptando os cliques no WebView... 233 Capítulo 8 TableView... 234 8.1 A tela que lista os carros... 234 8.2 Criando e ligando os outlets do TableView... 235 8.3 Protocolo UITableViewDataSource...238 8.4 Protocolo UITableViewDelegate... 242 8.5 Criando um array de carros para popular a tabela... 245 8.6 Criando a tela de detalhes do carro...251 8.7 Criando uma célula customizada para a linha da tabela... 255 Capítulo 9 Telas na horizontal e sensores... 264 9.1 Como definir as orientações suportadas no projeto...264 9.2 Auto Layout...266 9.3 Exemplo de Auto Layout...268 9.4 Auto Layout no projeto dos Carros... 273 9.5 Exibindo uma view diferente dependendo da orientação... 275 9.6 Definindo as orientações suportadas do view controller...283 9.7 Descobrindo a orientação atual...288

10 Desenvolvendo para iphone e ipad 2a Edição 9.8 Acelerômetro...288 9.9 Core Motion...295 9.10 Giroscópio...300 Capítulo 10 XML e JSON... 306 10.1 Integrando sistemas com XML e JSON...306 10.2 Copiando os arquivo XML e JSON para o projeto...308 10.3 Classe NSXMLParser...310 10.4 Atualizando a lista de carros para ler do XML...316 10.5 Criando uma imagem a partir de uma URL... 320 10.6 Adicionando um Segment Control na tela de lista dos carros... 323 10.7 Criando o outlet e action para o UISegmentControl... 324 10.8 Parser de XML com DOM... 328 10.9 Parser de JSON... 334 Capítulo 11 Web Services e Threads... 340 11.1 Introdução...340 11.2 Métodos performselectorinbackground e performselectoronmainthread.341 11.3 NSQueue e NSOperationQueue... 347 11.4 Atualizando a tela de detalhes do carro... 357 11.5 As classes NSURLRequest e NSURLConnection...360 11.6 Inserindo um botão de atualizar na navigation bar... 370 11.7 Criando uma classe utilitária e um delegate para facilitar as requisições HTTP... 372 11.8 Um problema de arquitetura: para pensar... 381 11.9 Requisições HTTP de forma síncrona...389 11.10 Como chamar um web service WSDL... 399 Capítulo 12 Persistência de dados... 401 12.1 Salvando dados com a classe NSUserDefaults... 401 12.2 Os métodos da classe NSUserDefaults...402 12.3 Salvando o tipo do carro nas preferências do usuário...406 12.4 Escrita e leitura de arquivos...409 12.5 Banco de dados SQLite... 413 12.6 Adicionando a biblioteca do SQLite no projeto... 415 12.7 Criando um banco de dados e a tabela do carro...417 12.8 Inserindo um carro na tabela...422 12.9 Deletando um carro na tabela... 425 12.10 Consultando todos os carros da tabela...427 12.11 Criando uma classe para encapsular a persistência do Carro...429 12.12 Atualizando o projeto para salvar os carros no banco de dados... 435 12.13 Atualizar os dados do carro ou excluir do banco de dados...440 12.14 Core Data... 447

Sumário 11 12.15 Preparando o projeto para utilizar Core Data... 454 12.16 Persistindo objetos com o Core Data... 458 12.17 Consultando objetos com o Core Data...460 12.18 Criando a classe de persistência...462 Capítulo 13 Mapas e GPS... 470 13.1 Introdução a mapas e GPS... 470 13.2 Adicionando os frameworks Map Kit e Core Location no projeto... 470 13.3 Preparando o projeto dos carros para exibir um mapa...471 13.4 Exibindo o mapa na coordenada desejada... 478 13.5 Marcando um local do mapa com um alfinete...483 13.6 Lendo as coordenadas GPS com o framework Core Location...488 13.7 Calculando distâncias...496 13.8 Desenhando uma rota... 497 13.9 Geocoding...498 Capítulo 14 Multimídia... 501 14.1 Exibindo um vídeo no aplicativo com a classe UIWebView... 501 14.2 Adicionando o framework Media Player no projeto... 507 14.3 Criando a classe VideoUtil...508 14.4 Exibindo um vídeo no aplicativo com a classe MPMoviePlayerController...512 14.5 HTTP Live Streaming...514 14.6 Reproduzindo um arquivo de vídeo local do projeto...515 14.7 Monitorando o início e o fim do vídeo com notificações...516 14.8 Reproduzindo o vídeo em tela cheia...519 14.9 Abrindo o vídeo com o player nativo...521 14.10 Controlando a reprodução do vídeo: pause e stop... 523 14.11 Reproduzindo música... 526 14.12 Gravando áudio...531 14.13 Acessando a galeria de fotos pelo aplicativo... 535 14.14 Executando o exemplo no ipad...543 14.15 Tirando uma foto e instalando o projeto no iphone...549 14.16 Abrindo documentos no ibooks... 550 Capítulo 15 ipad... 555 15.1 Projeto universal... 555 15.2 Verificando se o aparelho é iphone ou ipad... 557 15.3 UISplitViewController... 558 15.4 Utilizando o UISplitViewController no projeto dos carros...564 15.5 UIPopoverController... 574 15.6 Layout vertical no ipad com o UIPopoverController... 576

12 Desenvolvendo para iphone e ipad 2a Edição Capítulo 16 Interface Builder... 583 16.1 Código-fonte inicial do AppDelegate...583 16.2 Criando o arquivo MainWindow.xib...584 16.3 Entendendo a estrutura do arquivo MainWindow.xib...588 16.4 Tab Bar... 593 16.5 SplitView para ipad...605 Capítulo 17 Animações... 620 17.1 Core Animation... 620 17.2 Criando um contexto para executar uma animação... 620 17.3 As principais propriedades que podem ser animadas... 622 17.4 Configurando os parâmetros da animação... 622 17.5 Projeto de exemplo com animações... 624 17.6 Animação de transparência alpha... 627 17.7 As estruturas CGRect, CGPoint e CGSize... 628 17.8 Diferença entre as propriedades frame e bounds...631 17.9 Movendo uma view... 632 17.10 Utilizando transformações para mover uma view... 635 17.11 Redimensionando uma view...638 17.12 Rotacionando uma view... 641 17.13 Monitorando o final da animação...642 17.14 Introdução a blocos...644 17.15 Blocos com retorno e argumentos...645 17.16 Passando blocos como argumentos para métodos...645 17.17 Animação com blocos... 647 Capítulo 18 Views, Touch, Gestos, Quartz 2D e SpriteKit... 651 18.1 Criando uma view customizada...651 18.2 Quartz 2D... 652 18.3 Criando um projeto com Quartz... 655 18.4 Desenhando com Quartz...664 18.5 Tratando eventos de touch... 675 18.6 Gestos com a classe UIGestureRecognizer... 678 18.7 Dynamic Behavior... 681 18.8 SpriteKit...685 Capítulo 19 Gerenciamento de memória e Profiler... 692 19.1 Criando o projeto com o ARC desligado... 692 19.2 Métodos release e dealloc...696 19.3 Autorelease...696 19.4 O erro EXC_BAD_ACCESS...699 19.5 Gerenciamento de memória com retain e release...700

Sumário 13 19.6 Quando é necessário utilizar o método retain... 702 19.7 Demonstrando um memory leak...706 19.8 Criando propriedades com a notação @property (revisão)...708 19.9 Resumo... 711 19.10 NSArray, NSMutableArray e mais detalhes sobre o gerenciamento de memória... 713 19.11 NSDictionary e NSMutableDictionary... 715 19.12 ARC (Automatic Reference Counting)... 716 19.13 Migrando um projeto dos carros para o ARC...718 19.14 Ferramentas de Profiler... 722 19.15 A ferramenta Allocations... 722 19.16 A ferramenta Zombies... 725 Capítulo 20 App Store e anúncios... 730 20.1 App Store... 730 20.2 ios Dev Center... 733 20.3 Certificates, Identifiers & Profiles... 734 20.4 Criando o certificado de desenvolvedor... 737 20.5 Configurando o device para desenvolvimento... 740 20.6 App ID... 742 20.7 Provisioning Profile... 744 20.8 Executando o projeto diretamente no aparelho... 748 20.9 Instalando outros projetos no device... 750 20.10 Gerando receitas com anúncios iad... 750 20.11 itunes Connect preparando o projeto para publicar na App Store... 755 20.12 Publicando na App Store...760 Capítulo 21 Local e Push Notifications... 764 21.1 NSNotificationCenter...764 21.2 Número de notificação no logo do aplicativo...766 21.3 Local Notifications... 767 21.4 Remote Notifications...772 21.5 Código para receber uma Remote Notification (push)...779 21.6 Servidor para enviar mensagens por push...781 21.7 Onde obter mais informações...784