SlideShare uma empresa Scribd logo
1 de 46
Desenvolvimento iOS




   André Gustavo Espeiorin
Apresentação
Sócio/Programador/Eletricista da Code Rockr

Programo para:
 ‣ Web
 ‣ iOS...


... e nas horas vagas:
  ‣ Mac OS X
  ‣ Arduino


“Professor” de desenvolvimento iOS

http://twitter.com/xorna

xorna@coderockr.com
Plataforma iOS
Aplicativos nativos

Dispositivos atualizados

Programas para desenvolvedores pagos

Ambiente controlado

Comissão de 30% para aplicativos pagos

Mercado de Aplicativos Gigante
Pré-requisitos
Programação Orientada a Objetos

Inglês pelo menos para leitura

Conhecimento de Design Patterns

MVC é primário

Acesso a Mac OS X

Ferramentas de desenvolvimento

Um iDevice para testes é recomendado
Recursos para desenvolvedores
iOS Dev Center

Apple Developer Forums

Documentação

Ferramentas de desenvolvimento

Provisioning Portal

iTunes Connect
iOS Dev Center
Apple Developer Forums
Documentação
Human Interface Guidelines
Guia para construção de interfaces

Estudos de UX feitos sobre os apps da Apple

Frequentemente atualizada

Indispensável para designers e desenvolvedores
Ferramentas de Desenvolvimento
Xcode

iOS Simulator

Instruments

Cocoa-Touch
 ‣ Foundation Framework
 ‣ UIKit Framework


Frameworks Gráficos
Xcode
Ambiente de desenvolvimento integrado nativo da Apple

Versão atual: 4.2

Suporta desenvolvimento iOS e Mac OS X

Possui Interface Builder Integrado

Possui console de depuração

Grátis para desenvolvedores e usuários Mac OS X Lion

Possui documentação completa integrada
Xcode
iOS Simulator




          iPhone   iPhone Retina Display
iOS Simulator




                iPad
Instruments (Profiling)
Framework Foundation
Framework base do Mac OS X e iOS

Totalmente Objective-C

Facilita o desenvolvimento

Classes básicas como:
 ‣ NSObject
 ‣ NSString
 ‣ NSArray
 ‣ NSDictionary
UIKit
Framework responsável pela Interface Gráfica

Elementos gráficos

Controles

Eventos

Manipulação de eventos de toque
UIKit
UIView

UIViewController

UITabBarController

UIImage

UIImageView

UILabel

UIButton
Objective-C
Baseada em C

Orientada a Objetos

Inspirada em SmallTalk

Mac OS X e iOS

Pode ser usada combinada com C e C++
Sintaxe Objective-C
Declaração de Classes
Necessária a prévia declaração de uma classe com suas
propriedades, métodos e demais configurações de comportamento.

  #import <Foundation/Foundation.h>

  // Inicio da declaração
  @interface Carro : NSObject

  // Lista de propriedades
  @property (nonatomic, strong)   NSString *modelo;
  @property (nonatomic, strong)   NSString *fabricante;
  @property (nonatomic, strong)   UIColor *cor;
  @property (nonatomic, assign)   BOOL ligado;

  // Lista   de Métodos
  - (void)   acelerar:(NSInteger) aceleracao;
  - (void)   freiar:(NSInteger) desaceleracao;
  - (BOOL)   ligar;
  - (BOOL)   desligar;

  // Final da declaração
  @end
Configuração de Propriedades
Usadas para configurar o comportamento dos getters e setters.

Leitura/Escrita
 ‣ readwrite
 ‣ readonly


Atribuição
 ‣ assign
 ‣ strong
 ‣ unsafe_unretained


Atomicidade
 ‣ atomic
 ‣ nonatomic
Assinatura de Métodos
Implementação de Classes
Seguindo a declaração prévia da classe, faz-se a implementação da
mesma. Abaixo a implementação das propriedades.


  // Importação da declaração da classe
  #import "Carro.h"

  // Início da Implementação
  @implementation Carro

  // Geração automática de getter and setter + variável privada
  @synthesize modelo = _modelo;
  @synthesize fabricante = _fabricante;
  @synthesize cor = _cor;
  @synthesize ligado = _ligado;
@synthesize
Gera os métodos get e set para cada propriedade, de acordo com
sua configuração.

Cria também uma variável dentro do escopo da implementação para
acesso direto a uma propriedade.
Implementação de Classes
Agora a implementação dos métodos

 // Implementação dos métodos
 - (void) acelerar:(NSInteger)aceleracao {

 }

 - (void) freiar:(NSInteger)desaceleracao {

 }

 - (BOOL) ligar {
     return YES;
 }

 - (BOOL) desligar {
     return YES;
 }

 // Final da Implementação
 @end
Criação de Objetos




 Carro *carro = [[Carro alloc] init];
 carro.modelo = @"Ecosport";
 carro.fabricante = @"Ford";
 carro.cor = [UIColor redColor];

 [carro   ligar];
 [carro   acelerar:10];
 [carro   freiar:10];
 [carro   desligar];
Classes básicas do Cocoa
NSString
Classe padrão para manipulação de strings, pode ser mutável
(NSString) ou imutável (NSMutableString)




     // NSString na criação de uma imagem
     UIImage *img = [UIImage imageNamed:@"icon.png"];

     // Manipulação de uma string mutável
     NSMutableString *str = [NSMutableString stringWithString:@"Mac OS
 Dev"];

 !   [str   replaceOccurrencesOfString:@"Mac OS"
 !   ! !    ! ! !    withString:@"iOS"
 !   ! !    ! ! ! ! options:NSLiteralSearch
 !   ! !    ! ! ! !      range:NSMakeRange(0, [str length])];
NSArray
Utilizada para armazenar e manipular listas ordenadas
numericamente. Possui uma forma imutável (NSArray) e uma forma
mutável (NSMutableArray).



     // Criação do Array
     NSArray *carros = [NSArray arrayWithObjects:@"Corsa", @"Palio",
 @"Fiesta", @"Gol", nil];

     // Acesso a um objeto em um índice específico
     NSString *carro = [carros objectAtIndex:0];
NSDictionary
Utilizada para armazenar para armazenar e manipular listas com
índices não numéricos. Possui uma versão imutável (NSDictionary) e
uma versão mutável (NSMutableDictionary)


      // Criação da lista
  NSDictionary *dict = [NSDictionary
  dictionaryWithObjectsAndKeys:@"primeiro", @"objeto1", @"segundo",
  @"objeto2", nil];

  // Recuperação de um item específico
  NSString *item = [dict objectForKey:@"primeiro"];
NSNumber
Utilizada para armazenar e manipular qualquer valor numérico de
qualquer tipo (int, float, double), forma utilizada para utilizar números
como objetos. É possível recuperar o valor em tipo nativo a qualquer
instante.


  // Criação do Objeto
  NSNumber *number = [NSNumber numberWithFloat:12.3];

  // Recuperação do Valor
  float floatNumber = [number floatValue];
Xcode na Prática
Uso do Interface Builder
Criação de interfaces de forma totalmente visual

Ligações com o ViewController
 ‣ IBOutlet
 ‣ IBAction



  // Conecta o elemento a uma propriedade
  @property (nonatomic, strong) IBOutlet UILabel *label;

  // Conecta o elemento a uma ação
  - (IBAction)doSomething:(id)sender;
Conexão InterfaceBuilder - Código
Uso de Imagens
Um dos recursos mais comuns no desenvolvimento de aplicativos

Imagens podem ser:
 ‣ Arquivos Locais
 ‣ Objetos Quartz
 ‣ Fotos tiradas com a camera
 ‣ Dados vindos de um servidor


Formatos Suportados:
 ‣ .tiff, .tif
 ‣ .jpg, .jpeg
 ‣ .gif
 ‣ .png
 ‣ .bmp
 ‣ .ico
 ‣ .cur
 ‣ .xbm
Retina Display e as Imagens
Pixels 4x mais densos

Resolução duplicada

Solução:
 ‣ Imagens Normais para displays comuns
 ‣ Imagens com tamanho duplicado para Retina Display


Tratamento via Código:
Nenhum

Na prática:
 ‣ Imagem normal com seu nome comum: background.png
 ‣ Imagem retina com sufixo @2x: background@2x.png
UIImage
Representação de uma imagem em forma de objeto

Imutável

Possui gerenciamento automático de memória

Evitar imagens maiores que 1024x1024

Redimensionamento de Imagens:
 ‣ Configuração do objeto UIImageView para apresentação
 ‣ Via código, de forma permanente
UIImageView
Um UIView para exibição de imagens

Suporta animações com vários frames

Exibe um objeto UIImage

Possui propriedades para redimensionamento da imagem
Exibindo Imagens


https://github.com/xorna/Images
Elementos de Controle
Elementos de interface utilizados para interação com usuário

Executam ações e controlam valores

UIKit possui os de uso mais comum

Possibilidade de personalização

Possibilidade de criação de novos elementos utilizando Cocoa
UIButton
Elemento básico de interação

Fácil personalização

Diversos Formatos

Imagens ou cores
UISlider
Controla um valor entre um mínimo e um máximo

Deslize lateral

Utilizado em configurações
UISwitch
Valores Booleanos

Não possui personalização

Também muito utilizado em configurações
UISegmentedControl
Controle de vários botões

O valor armazenado é o índice selecionado

Configurações de múltipla escolha

Utilizado para separação de conteúdo em abas
Utilizando os Controles


https://github.com/xorna/Controles

Mais conteúdo relacionado

Mais procurados

Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - MackenzieIntrodução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenziejonathanblacknight
 
Persistência com Realm.io
Persistência com Realm.ioPersistência com Realm.io
Persistência com Realm.ioOnyo
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Flávio Ribeiro
 
Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Odair Bonin Borges
 
Apostila de Jogos em Rede com Java
Apostila de Jogos em Rede com JavaApostila de Jogos em Rede com Java
Apostila de Jogos em Rede com JavaMarco Reis
 
Desenvolvimento de jogos com HTML5 e javascript
Desenvolvimento de jogos com HTML5 e javascriptDesenvolvimento de jogos com HTML5 e javascript
Desenvolvimento de jogos com HTML5 e javascriptWillian Molinari
 
Construção de jogos com o motor unity3d (2013)
Construção de jogos com o motor unity3d (2013)Construção de jogos com o motor unity3d (2013)
Construção de jogos com o motor unity3d (2013)Eduardo Bonfandini
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Flávio Ribeiro
 
Desenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos AndroidDesenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos AndroidNelson Glauber Leal
 

Mais procurados (14)

Java ME - Game API
Java ME - Game APIJava ME - Game API
Java ME - Game API
 
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - MackenzieIntrodução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
 
Persistência com Realm.io
Persistência com Realm.ioPersistência com Realm.io
Persistência com Realm.io
 
Mobile conf
Mobile confMobile conf
Mobile conf
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
 
Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2
 
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island StudiosTutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
 
Apostila de Jogos em Rede com Java
Apostila de Jogos em Rede com JavaApostila de Jogos em Rede com Java
Apostila de Jogos em Rede com Java
 
Desenvolvimento de jogos com HTML5 e javascript
Desenvolvimento de jogos com HTML5 e javascriptDesenvolvimento de jogos com HTML5 e javascript
Desenvolvimento de jogos com HTML5 e javascript
 
Metal
MetalMetal
Metal
 
Construção de jogos com o motor unity3d (2013)
Construção de jogos com o motor unity3d (2013)Construção de jogos com o motor unity3d (2013)
Construção de jogos com o motor unity3d (2013)
 
Docker
DockerDocker
Docker
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
 
Desenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos AndroidDesenvolvimento Moderno de Aplicativos Android
Desenvolvimento Moderno de Aplicativos Android
 

Semelhante a Desenvolvimento iOS

PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETslides_teltools
 
Minicurso Objective-C
Minicurso Objective-CMinicurso Objective-C
Minicurso Objective-CSaulo Arruda
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_onRoberson Alves
 
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchDesenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchCampus Party Brasil
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Introducao ao Desenvolvimento iOS
Introducao ao Desenvolvimento iOSIntroducao ao Desenvolvimento iOS
Introducao ao Desenvolvimento iOSDiogo Costa
 
iOS Delegates - Mobile Conf Rio 2014
iOS Delegates - Mobile Conf Rio 2014iOS Delegates - Mobile Conf Rio 2014
iOS Delegates - Mobile Conf Rio 2014osnipso
 
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftSemcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftJuliana Chahoud
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
Aula 1 view model livedata e databinding.pptx
Aula 1   view model livedata e databinding.pptxAula 1   view model livedata e databinding.pptx
Aula 1 view model livedata e databinding.pptxRicardo Ogliari
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 

Semelhante a Desenvolvimento iOS (20)

Desenvolvendo para iOS
Desenvolvendo para iOSDesenvolvendo para iOS
Desenvolvendo para iOS
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NET
 
Minicurso Objective-C
Minicurso Objective-CMinicurso Objective-C
Minicurso Objective-C
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_on
 
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchDesenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Introducao ao Desenvolvimento iOS
Introducao ao Desenvolvimento iOSIntroducao ao Desenvolvimento iOS
Introducao ao Desenvolvimento iOS
 
iOS Delegates - Mobile Conf Rio 2014
iOS Delegates - Mobile Conf Rio 2014iOS Delegates - Mobile Conf Rio 2014
iOS Delegates - Mobile Conf Rio 2014
 
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftSemcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Aula 1 view model livedata e databinding.pptx
Aula 1   view model livedata e databinding.pptxAula 1   view model livedata e databinding.pptx
Aula 1 view model livedata e databinding.pptx
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 

Último

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 

Último (8)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Desenvolvimento iOS

  • 1. Desenvolvimento iOS André Gustavo Espeiorin
  • 2. Apresentação Sócio/Programador/Eletricista da Code Rockr Programo para: ‣ Web ‣ iOS... ... e nas horas vagas: ‣ Mac OS X ‣ Arduino “Professor” de desenvolvimento iOS http://twitter.com/xorna xorna@coderockr.com
  • 3. Plataforma iOS Aplicativos nativos Dispositivos atualizados Programas para desenvolvedores pagos Ambiente controlado Comissão de 30% para aplicativos pagos Mercado de Aplicativos Gigante
  • 4. Pré-requisitos Programação Orientada a Objetos Inglês pelo menos para leitura Conhecimento de Design Patterns MVC é primário Acesso a Mac OS X Ferramentas de desenvolvimento Um iDevice para testes é recomendado
  • 5. Recursos para desenvolvedores iOS Dev Center Apple Developer Forums Documentação Ferramentas de desenvolvimento Provisioning Portal iTunes Connect
  • 9. Human Interface Guidelines Guia para construção de interfaces Estudos de UX feitos sobre os apps da Apple Frequentemente atualizada Indispensável para designers e desenvolvedores
  • 10. Ferramentas de Desenvolvimento Xcode iOS Simulator Instruments Cocoa-Touch ‣ Foundation Framework ‣ UIKit Framework Frameworks Gráficos
  • 11. Xcode Ambiente de desenvolvimento integrado nativo da Apple Versão atual: 4.2 Suporta desenvolvimento iOS e Mac OS X Possui Interface Builder Integrado Possui console de depuração Grátis para desenvolvedores e usuários Mac OS X Lion Possui documentação completa integrada
  • 12. Xcode
  • 13. iOS Simulator iPhone iPhone Retina Display
  • 16. Framework Foundation Framework base do Mac OS X e iOS Totalmente Objective-C Facilita o desenvolvimento Classes básicas como: ‣ NSObject ‣ NSString ‣ NSArray ‣ NSDictionary
  • 17. UIKit Framework responsável pela Interface Gráfica Elementos gráficos Controles Eventos Manipulação de eventos de toque
  • 19. Objective-C Baseada em C Orientada a Objetos Inspirada em SmallTalk Mac OS X e iOS Pode ser usada combinada com C e C++
  • 21. Declaração de Classes Necessária a prévia declaração de uma classe com suas propriedades, métodos e demais configurações de comportamento. #import <Foundation/Foundation.h> // Inicio da declaração @interface Carro : NSObject // Lista de propriedades @property (nonatomic, strong) NSString *modelo; @property (nonatomic, strong) NSString *fabricante; @property (nonatomic, strong) UIColor *cor; @property (nonatomic, assign) BOOL ligado; // Lista de Métodos - (void) acelerar:(NSInteger) aceleracao; - (void) freiar:(NSInteger) desaceleracao; - (BOOL) ligar; - (BOOL) desligar; // Final da declaração @end
  • 22. Configuração de Propriedades Usadas para configurar o comportamento dos getters e setters. Leitura/Escrita ‣ readwrite ‣ readonly Atribuição ‣ assign ‣ strong ‣ unsafe_unretained Atomicidade ‣ atomic ‣ nonatomic
  • 24. Implementação de Classes Seguindo a declaração prévia da classe, faz-se a implementação da mesma. Abaixo a implementação das propriedades. // Importação da declaração da classe #import "Carro.h" // Início da Implementação @implementation Carro // Geração automática de getter and setter + variável privada @synthesize modelo = _modelo; @synthesize fabricante = _fabricante; @synthesize cor = _cor; @synthesize ligado = _ligado;
  • 25. @synthesize Gera os métodos get e set para cada propriedade, de acordo com sua configuração. Cria também uma variável dentro do escopo da implementação para acesso direto a uma propriedade.
  • 26. Implementação de Classes Agora a implementação dos métodos // Implementação dos métodos - (void) acelerar:(NSInteger)aceleracao { } - (void) freiar:(NSInteger)desaceleracao { } - (BOOL) ligar { return YES; } - (BOOL) desligar { return YES; } // Final da Implementação @end
  • 27. Criação de Objetos Carro *carro = [[Carro alloc] init]; carro.modelo = @"Ecosport"; carro.fabricante = @"Ford"; carro.cor = [UIColor redColor]; [carro ligar]; [carro acelerar:10]; [carro freiar:10]; [carro desligar];
  • 29. NSString Classe padrão para manipulação de strings, pode ser mutável (NSString) ou imutável (NSMutableString) // NSString na criação de uma imagem UIImage *img = [UIImage imageNamed:@"icon.png"]; // Manipulação de uma string mutável NSMutableString *str = [NSMutableString stringWithString:@"Mac OS Dev"]; ! [str replaceOccurrencesOfString:@"Mac OS" ! ! ! ! ! ! withString:@"iOS" ! ! ! ! ! ! ! options:NSLiteralSearch ! ! ! ! ! ! ! range:NSMakeRange(0, [str length])];
  • 30. NSArray Utilizada para armazenar e manipular listas ordenadas numericamente. Possui uma forma imutável (NSArray) e uma forma mutável (NSMutableArray). // Criação do Array NSArray *carros = [NSArray arrayWithObjects:@"Corsa", @"Palio", @"Fiesta", @"Gol", nil]; // Acesso a um objeto em um índice específico NSString *carro = [carros objectAtIndex:0];
  • 31. NSDictionary Utilizada para armazenar para armazenar e manipular listas com índices não numéricos. Possui uma versão imutável (NSDictionary) e uma versão mutável (NSMutableDictionary) // Criação da lista NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"primeiro", @"objeto1", @"segundo", @"objeto2", nil]; // Recuperação de um item específico NSString *item = [dict objectForKey:@"primeiro"];
  • 32. NSNumber Utilizada para armazenar e manipular qualquer valor numérico de qualquer tipo (int, float, double), forma utilizada para utilizar números como objetos. É possível recuperar o valor em tipo nativo a qualquer instante. // Criação do Objeto NSNumber *number = [NSNumber numberWithFloat:12.3]; // Recuperação do Valor float floatNumber = [number floatValue];
  • 34. Uso do Interface Builder Criação de interfaces de forma totalmente visual Ligações com o ViewController ‣ IBOutlet ‣ IBAction // Conecta o elemento a uma propriedade @property (nonatomic, strong) IBOutlet UILabel *label; // Conecta o elemento a uma ação - (IBAction)doSomething:(id)sender;
  • 36. Uso de Imagens Um dos recursos mais comuns no desenvolvimento de aplicativos Imagens podem ser: ‣ Arquivos Locais ‣ Objetos Quartz ‣ Fotos tiradas com a camera ‣ Dados vindos de um servidor Formatos Suportados: ‣ .tiff, .tif ‣ .jpg, .jpeg ‣ .gif ‣ .png ‣ .bmp ‣ .ico ‣ .cur ‣ .xbm
  • 37. Retina Display e as Imagens Pixels 4x mais densos Resolução duplicada Solução: ‣ Imagens Normais para displays comuns ‣ Imagens com tamanho duplicado para Retina Display Tratamento via Código: Nenhum Na prática: ‣ Imagem normal com seu nome comum: background.png ‣ Imagem retina com sufixo @2x: background@2x.png
  • 38. UIImage Representação de uma imagem em forma de objeto Imutável Possui gerenciamento automático de memória Evitar imagens maiores que 1024x1024 Redimensionamento de Imagens: ‣ Configuração do objeto UIImageView para apresentação ‣ Via código, de forma permanente
  • 39. UIImageView Um UIView para exibição de imagens Suporta animações com vários frames Exibe um objeto UIImage Possui propriedades para redimensionamento da imagem
  • 41. Elementos de Controle Elementos de interface utilizados para interação com usuário Executam ações e controlam valores UIKit possui os de uso mais comum Possibilidade de personalização Possibilidade de criação de novos elementos utilizando Cocoa
  • 42. UIButton Elemento básico de interação Fácil personalização Diversos Formatos Imagens ou cores
  • 43. UISlider Controla um valor entre um mínimo e um máximo Deslize lateral Utilizado em configurações
  • 44. UISwitch Valores Booleanos Não possui personalização Também muito utilizado em configurações
  • 45. UISegmentedControl Controle de vários botões O valor armazenado é o índice selecionado Configurações de múltipla escolha Utilizado para separação de conteúdo em abas

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n