SlideShare uma empresa Scribd logo
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

KEY
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
PPTX
Desenvolvendo jogos multiplataforma usando cocos2d-js
ODP
Do zero ao jogo multiplataforma com cocos2d
PPTX
Desenvolvimento de Jogos com Corona SDK
PDF
Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento d...
PPT
Aula1 intro
PPT
OOP ObjC
PPT
Aula3 input
Desenvolvimento de Jogos com Cocos2d - Apresentação Coderockr Jam
Desenvolvendo jogos multiplataforma usando cocos2d-js
Do zero ao jogo multiplataforma com cocos2d
Desenvolvimento de Jogos com Corona SDK
Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento d...
Aula1 intro
OOP ObjC
Aula3 input

Mais procurados (14)

PDF
Java ME - Game API
PPT
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
PDF
Persistência com Realm.io
PDF
Mobile conf
PDF
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
PPTX
Oficina Android - Games com AndEngine - Dia 2
PDF
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
PPT
Apostila de Jogos em Rede com Java
PDF
Desenvolvimento de jogos com HTML5 e javascript
PDF
Metal
PDF
Construção de jogos com o motor unity3d (2013)
PDF
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
PDF
Desenvolvimento Moderno de Aplicativos Android
Java ME - Game API
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Persistência com Realm.io
Mobile conf
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Oficina Android - Games com AndEngine - Dia 2
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
Apostila de Jogos em Rede com Java
Desenvolvimento de jogos com HTML5 e javascript
Metal
Construção de jogos com o motor unity3d (2013)
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Desenvolvimento Moderno de Aplicativos Android
Anúncio

Semelhante a Desenvolvimento iOS (20)

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

Último (11)

PPTX
Utilizando code blockes por andre backes
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Tipos de servidor em redes de computador.pptx
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Design - Introdução a Gestalt e teoria das formas
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Eng. Software - pontos essenciais para o início
Utilizando code blockes por andre backes
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Tipos de servidor em redes de computador.pptx
Manejo integrado de pragas na cultura do algodão
Design - Introdução a Gestalt e teoria das formas
Viasol Energia Solar -Soluções para geração e economia de energia
Arquitetura de computadores - Memórias Secundárias
Eng. Software - pontos essenciais para o início

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