Your SlideShare is downloading. ×
0
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Desenvolvendo para iOS com Cocoa-Touch

6,895

Published on

Apresentação dos primeiros passos para criação do seu primeiro aplicativo nativo para a plataforma iOS, um dos sistemas operacionais para ambientes móveis mais avançados do mundo, utilizando …

Apresentação dos primeiros passos para criação do seu primeiro aplicativo nativo para a plataforma iOS, um dos sistemas operacionais para ambientes móveis mais avançados do mundo, utilizando Cocoa-Touch.

Oficineiro: Bruno Bilescky

Desenvolvedor iOS e entusiasta de novas tecnologias e conceitos.

Published in: Technology
0 Comments
21 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,895
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
21
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Desenvolvendo para iOS com CocoaTouch
  • 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
  • 3. Documentação O primeiro grande passo
  • 4. Documentação• https://developer.apple.com/library/ios/ipad/#home
  • 5. Documentação• https://github.com/brunogb/DocSets-for-iOS
  • 6. Documentação• HIG - Human interface guidelines
  • 7. Principais ferramentas
  • 8. Xcode
  • 9. Xcode• Edição do código• Construção da interface• Ferramenta de depuração de código• Modelador de banco de dados
  • 10. XcodeEditor de versão do códigoSuporte:
  • 11. Interface Builder?
  • 12. Interface Builder
  • 13. Interface Builder • IBOutlets e IBActions diretamente da interface
  • 14. Instruments
  • 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
  • 16. Instruments
  • 17. Instruments
  • 18. Instruments
  • 19. Objective-C
  • 20. Sintaxe
  • 21. Sintaxe
  • 22. ARCAutomatic Reference Counting
  • 23. ARCAutomatic 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
  • 24. ARCAutomatic Reference Counting
  • 25. ARCAutomatic Reference Counting @autoreleasepool { <seu código> }
  • 26. Usando blocos com Objective-C E quais as vantagens em se utilizar blocos
  • 27. Usando blocos com Objective-C Blocos são objetos que encapsulam um segmento de código a ser executado.
  • 28. Usando blocos com Objective-C Adotado cada vez mais nos novos frameworks
  • 29. Usando blocos com Objective-C Como remover uma view com fade
  • 30. Usando blocos com Objective-C Transição "Flip" entre views
  • 31. Definindo blocos
  • 32. Definindo blocoshttps://github.com/brunogb/BlocksKitBlocksKit adiciona o suporte a blocos em diversosframeworks que ainda não tem esse suporte• Filtros em arrays e dicionários• Alertas e ActionSheets• Timers• Conexões de internet• Reconhecimento de gestos
  • 33. Executando tarefas em background "nunca execute tarefas longas na thead principal"
  • 34. 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
  • 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)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
  • 36. Novidades do iOS 5Novos métodos, frameworks, e possibilidades
  • 37. NSJSONSerializationTraduzindo e gerando dados no formato JSON+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;+ (id)JSONObjectWithStream:(NSInputStream *)streamoptions:(NSJSONReadingOptions)opt error:(NSError **)error;+ (BOOL)isValidJSONObject:(id)obj;+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;
  • 38. UIKit
  • 39. 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 )
  • 40. UIScrollviewControlando o ponto de parada de um scroll- (void)scrollViewWillEndDragging:(UIScrollView *)svwithVelocity:(CGPoint)veltargetContentOffset:(inout CGPoint *)tCO; ( a variável tCO contem o possível ponto de parada dascrollView, e você pode altera-lo para o ponto que acharmelhor. Cuidado para não estraga a "física" da scrollView, ou o usuário pode ficar perdido)
  • 41. UIReferenceLibraryViewControllerExibindo definições de palavras- (id)initWithTerm:(NSString *)term;+ (BOOL)dictionaryHasDefinitionForTerm:(NSString *)term;
  • 42. UITableViewRegistrando UITableViewCell com um identifier- (void)registerNib:(UINib *)nibforCellReuseIdentifier:(NSString *)ident;Como recuperar um Nib UINib *nibFile = [UINib nibWithNibName:@"MyNib" bundle:nil];( Importante definir na UITableViewCell o mesmo identifier )
  • 43. UIImageImagens animadas+ (UIImage*)animatedImageNamed:(NSString *)name duration:(NSTimeInterval)duration;Busca por name0, name1....+ (UIImage*)animatedImageWithImages:(NSArray *)imagesduration:(NSTimeInterval)duration;@property (nonatomic, readonly) NSArray *images;@property (nonatomic, readonly) NSTimeInterval duration;
  • 44. UIImageImagens redimencionadas (tiles)- (UIImage*)resizableImageWithCapInsets:(UIEdgeInsets)i;duration:(NSTimeInterval)duration; {0, 1, 0, 1}
  • 45. UIViewControllerContainer
  • 46. UIViewControllerContainerContainer- (void)addChildViewController:(UIViewController *)cvc;- (void)removeFromParentViewController;@property (readonly) BOOL childViewControllers;Após executar o método <addChildViewController:> deve-se este método nocontrollers adicionado:- (void)didMoveToParentViewController:(UIViewController *)cvc;
  • 47. UIViewControllerContainerTransição entre controllers- (void)transitionFromViewController:(UIViewController *)fvctoViewController:(UIViewController *)tvcduration:(NSTimeInterval)durationoptions:(UIViewAnimationOptions)optionsanimations:(void (^)(void))animationscompletion:(void (^)(BOOL finished))completion;
  • 48. UIStepperControle para aumentar ou diminuir um valor@property (nonatomic) BOOL autorepeat;@property (nonatomic) double maximumValue;@property (nonatomic) double minimumValue;@property (nonatomic) double stepValue;@property (nonatomic) double value;
  • 49. Twitter & Accounts "Single sign-on"
  • 50. Twitter & Accounts "Single sign-on"TWRequest;Responsável por efetuar requisições para a API do Twitter. Casoseja um recurso protegido, basta definir a propriedade <account>. Saiba os métodos disponíveis em: http://dev.twitter.com/docs/apiTWTweetComposeViewControllerViewController que permite ao usuário enviar um tweet. Pode seradicionado uma imagem, ou url ao tweet antes de exibi-lo.
  • 51. Twitter & Accounts "Single sign-on"Código para recuperar todas as contas disponíveis
  • 52. UIStoryBoards
  • 53. UIStoryBoardsFácil de criar e visualizar a navegação do aplicativo
  • 54. UIStoryBoardUIViewController@property (readonly, retain) UIStoryBoard *storyboard;- (void)performSegueWithIdentifier:(NSString *)id sender:(id)sender;- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;- (void)instantiateViewControllerWithIdentifier:(NSString *)identifier
  • 55. UIStoryBoardUITableViewController Protótipo de células de tabelas dentro da própria tabela
  • 56. UIStoryBoardUITableViewController Tabelas com conteúdo estático pre definido
  • 57. Sincronização remota em tempo real entre aplicativos
  • 58. 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
  • 59. Configurando iCloud em seu aplicativo
  • 60. Configurando iCloud em seu aplicativo
  • 61. NewsstandRevistas e jornais no seu iDevice
  • 62. NewsstandRevistas 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.
  • 63. Animações e edição básica de imagens Utilizando QuartzCore, CoreAnimation e CoreImage
  • 64. CALayerToda UIView tem uma CALayer responsável por desenharo conteúdo na tela. Seus atributos podem ser animadosPara acessar a layer de uma UIView: UIView *view = [[UIView alloc] init]; CALayer *layer = view.layer;
  • 65. CALayer • cornerRadiusDeixa a view com borda arredondada.Caso a view possua conteúdos perto daborda, pode ser necessário utilizar apropriedade <clipToBounds> da viewpara que o conteúdo seja escondido UIView *view = [[UIView alloc] init]; CALayer *layer = view.layer; layer.cornerRadius = 8;
  • 66. CALayer • borderColor, borderWidthDefine cor e tamanho da borda da view.Acompanha o traçado do cornerRadius,se houver. A cor é definida com umareferencia do tipo CGColorRef. UIView *view = [[UIView alloc] init]; CALayer *layer = view.layer; layer.borderWidth = 3; layer.borderColor = [UIColor redColor].CGColor;
  • 67. CALayer • shadowOpacity, shadowRadius, shadowOffset, shadowColorDefine opacidade, radius, offset e cor dasombra da UIView. O offset é definidocomo um CGSize e determina a partirdo centro da view para qual direção asombra 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);
  • 68. Design e imagens
  • 69. Design e imagensRegra dos 44x44 pixels A área mínima de um controle que aceite um toque deve ser de 44x44 pixels.
  • 70. Design e imagensRegra dos 44x44 pixels
  • 71. Design e imagensRegra 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
  • 72. Design e imagensTamanho dos ícones do aplicativo• AppStore: 512x512px• iPad: 72x72px• Home screen: 57x57px• Home screen (Retina display): 114x114px
  • 73. Design e imagensTamanho da tela e desenvolvendo para tela Retina• iPhone: 320x480• iPad: 768x1024• IPhone Retina: 640x960Importante notar que para desenvolver para tela retina basta multiplicar por 2o tamanho do objeto numa tela não retina. Ex: uma imagem 50x50 em telanormal, em tela retina seria 100x100. E para utilizar imagens em retina, bastaela ter o mesmo nome da normal acrescentada de @2x antes da extensão.
  • 74. Design e imagensTamanho dos elementos internos• Status bar: 20px de altura• Navigation bar: 44px de altura• Tab bar: 49px de altura• Bar itens: 30x30 pixels
  • 75. Rasteando o usuáriodentro do aplicativo Aprendendo com o usuário o que mais importante e o que funciona melhor
  • 76. 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.
  • 77. 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.
  • 78. Mais informaçõesBruno Bilesckybruno.gondim@telefonicadigital.com.brbrunogb@gmail.com@bgondimDocumentação http://developer.apple.com

×