1. O documento discute o desenvolvimento de aplicativos para iOS usando CocoaTouch, cobrindo ferramentas como Xcode e Interface Builder, Objective-C, novidades do iOS 5 como compartilhamento no Twitter, animações, edição de imagens e rastreamento de usuários.
2. É destacado o uso de ferramentas como Xcode, Instruments e Interface Builder no desenvolvimento, além de tópicos como Objective-C, blocos, ARC e execução de tarefas em segundo plano.
3. Animações, edição de imagens, design para telas
2. Sumário
• Documentação
• Principais ferramentas de uso
• Objective-C / Cocoa touch
• Novidades do IOS 5
• Design e imagens
• Animações e edições de imagens
• Rastreando o usuário
15. Instruments
• Avaliação de performance, gargálos, memory leaks
• Automação de navegação pelo aplicativo
• Facilita encontrar bugs de programação
• Analisador de OpenGL
24. ARC
Automatic Reference Counting
• Não utilize os métodos dealloc, retain e release
• Para arquivos que não devam ser compilados com ARC, utilize a flag
<-fno-objc-arc>
• Todos os métodos da sua classe devem estar especificados na
interface
35. Executando tarefas em background
Tarefas com processamento paralisam a
interface gráfica e passam a sensação de
que o aplicativo não esta funcionando
- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg
36. Executando tarefas em background
Tarefas com processamento paralisam a
interface gráfica e passam a sensação de
que o aplicativo não esta funcionando
- (void)performSelectorOnMainThread:(SEL)aSelector
withObject:(id)arg waitUntilDone:(BOOL)wait
40. UIScreen
Controlando o brilho da tela
@property (nonatomic) CGFloat brightness;
@property (nonatomic) BOOL wantsSoftwareDimming;
( Cuidado com essa propriedade, ela pode causar uma
animação mais lenta se estiver habilitada )
41. UIScrollview
Controlando o ponto de parada de um scroll
- (void)scrollViewWillEndDragging:(UIScrollView *)sv
withVelocity:(CGPoint)vel
targetContentOffset:(inout CGPoint *)tCO;
( a variável tCO contem o possível ponto de parada da
scrollView, e você pode altera-lo para o ponto que achar
melhor. Cuidado para não estraga a "física" da scrollView,
ou o usuário pode ficar perdido)
43. UITableView
Registrando UITableViewCell com um identifier
- (void)registerNib:(UINib *)nib
forCellReuseIdentifier:(NSString *)ident;
Como recuperar um Nib
UINib *nibFile = [UINib nibWithNibName:@"MyNib" bundle:nil];
( Importante definir na UITableViewCell o mesmo identifier )
51. Twitter & Accounts
"Single sign-on"
TWRequest;
Responsável por efetuar requisições para a API do Twitter. Caso
seja um recurso protegido, basta definir a propriedade <account>.
Saiba os métodos disponíveis em: http://dev.twitter.com/docs/api
TWTweetComposeViewController
ViewController que permite ao usuário enviar um tweet. Pode ser
adicionado uma imagem, ou url ao tweet antes de exibi-lo.
52. Twitter & Accounts
"Single sign-on"
Código para recuperar todas as contas disponíveis
61. Configurando iCloud
em seu aplicativo
• Habilitar o provisioning profile com permissão para
iCloud
• Atualizar provisioning profile no Xcode
• Marcar o campo <entitlements> dentro do summary do
aplicativo
65. Newsstand
Revistas e jornais no seu iDevice
• Possibilita download de conteúdo em background
• Possibilita que o aplicativo seja lançado em
background via push notification
• Possibilita downloads de itens separados do servidor
em background.
• Ícone do aplicativo pode ser alterado para refletir a
última edição recebida.
66. Animações e edição básica de imagens
Utilizando QuartzCore, CoreAnimation e CoreImage
67. CALayer
Toda UIView tem uma CALayer responsável por desenhar
o conteúdo na tela. Seus atributos podem ser animados
Para acessar a layer de uma UIView:
UIView *view = [[UIView alloc] init];
CALayer *layer = view.layer;
68. CALayer • cornerRadius
Deixa a view com borda arredondada.
Caso a view possua conteúdos perto da
borda, pode ser necessário utilizar a
propriedade <clipToBounds> da view
para que o conteúdo seja escondido
UIView *view = [[UIView alloc] init];
CALayer *layer = view.layer;
layer.cornerRadius = 8;
69. CALayer • borderColor, borderWidth
Define cor e tamanho da borda da view.
Acompanha o traçado do cornerRadius,
se houver. A cor é definida com uma
referencia do tipo CGColorRef.
UIView *view = [[UIView alloc] init];
CALayer *layer = view.layer;
layer.borderWidth = 3;
layer.borderColor = [UIColor redColor].CGColor;
70. CALayer • shadowOpacity, shadowRadius,
shadowOffset, shadowColor
Define opacidade, radius, offset e cor da
sombra da UIView. O offset é definido
como um CGSize e determina a partir
do centro da view para qual direção a
sombra vai se deslocar.
UIView *view = [[UIView alloc] init];
CALayer *layer = view.layer;
layer.shadowOpacity = 0.8;
layer.shadowColor = [UIColor redColor].CGColor;
layer.shadowRadius = 2;
layer.shadowOffset = CGSizeMake(0,1);
74. Design e imagens
Regra dos 44x44 pixels
UINavigationBar tem 44px de altura, e apesar
de seus botões interior terem 30px de altura,
sua área de toque é estendida para os 44px
75. Design e imagens
Tamanho dos ícones do aplicativo
• AppStore: 512x512px
• iPad: 72x72px
• Home screen: 57x57px
• Home screen (Retina display): 114x114px
76. Design e imagens
Tamanho da tela e desenvolvendo para tela Retina
• iPhone: 320x480
• iPad: 768x1024
• IPhone Retina: 640x960
Importante notar que para desenvolver para tela retina basta multiplicar por 2
o tamanho do objeto numa tela não retina. Ex: uma imagem 50x50 em tela
normal, em tela retina seria 100x100. E para utilizar imagens em retina, basta
ela ter o mesmo nome da normal acrescentada de @2x antes da extensão.
77. Design e imagens
Tamanho dos elementos internos
• Status bar: 20px de altura
• Navigation bar: 44px de altura
• Tab bar: 49px de altura
• Bar itens: 30x30 pixels
78. Rasteando o usuário
dentro do aplicativo
Aprendendo com o usuário o que mais
importante e o que funciona melhor
79. Rasteando o usuário dentro do aplicativo
As melhores ferramentas disponíveis no momento
são Google analytics e Flurry.
Ambas são muito parecidas em termos de
funcionalidades mas cada uma se destaca em
uma área.
80. Flurry
• Analytics para iOS, Android, Blackberry, Windows Phone,
JavaME, HTML5.
• Rastreia dados como sexo do usuário, idade e ID (desde
que esses dados sejam fornecidos pelo programador)
• Relatórios são mais simples porém.
Google analytics
• Analytics para iOS, Android e HTML.
• Rastreia dados customizados definidos pelo
desenvolvidor
• Integração com ecommerce, e campanhas. Versão web
• Relatórios detalhados, mesmo painel da versão web.