SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
P O R R E N ATA FA R I A
Abandonando o
Interface Builder
Q U A N D O T U D O C O M E Ç O U …
Q U A N D O T U D O C O M E Ç O U …
E I V O U U S A R A
S T O RY B O A R D V I U ! ! !
A F F, D E N O V O ? ?
P E R A Í E N TÃ O Q U E V O U D A R
L O G O M E U P U S H
Q U A N D O T U D O C O M E Ç O U …
V I S H , F O I M A L !
D E U M E R G E F O I ?
M E N I N A ! P O R Q U E T U N Ã O M E
D I S S E Q U E T I N H A A LT E R A D O A
S T O RY B O A R D ? ? ? ?
A I N D A B E M Q U E
S O U W E B
N Ã O É P O S S Í V E L
Q U E E M E M P R E S A
G R A N D E S E J A D E S S A
F O R M A …
ಠ_ಠ
E A I E U D E S C O B R I Q U E É P I O R
D O Q U E E U P E N S E I …
A I N T E R FA C E B U I L D E R …
demora………
demora………
demora………
Haja paciência!
Quando você clica para abrir
E quando tem muitas telas para buildar
=
Se você fizer
essa tela
Você também terá
que fazer a
próxima, mesmo
que seja igual
O que é péssimo
se você precisar
reutilizar toda
hora o código
Mas é ainda mais
divertido tentar
explicar seu
layout para seus
colegas!
L I N H A S L I N H A S L I N H A S
Quanto mais
telas, mais linhas
e mais confuso
Se você tiver muitas telas,
boa sorte memorizando a
posição de cada uma
Se não tiver cuidado na hora de modificar
seu layout, pode esperar muitos erros!
Além de te tomar bastante tempo,
modificando de um por um
Cuidado com
identificadores!
M A S E X I S T E M M O M E N T O S E M O M E N T O S
Prós de
Storyboards
T E A J U D A A
P R O T O T I PA R , S E
V O C Ê N Ã O T E M U M
D E S I G N P R O N T O
A P P S P E Q U E N O S
F I C A M P R O N T O S
M A I S R Á P I D O S
E como fazer o código sem interface builder?
PA S S O Z E R O :
D E S AT I V E A I N T E R FA C E N O S A J U S T E S D O A P P
PA S S O 1 :
E N T E N D A O C I C L O D E V I D A D O S E U A P P
Lembre-se que o App
Delegate é o primeiro a
buildar!
E é nele que você chamará
sua primeira tela
VA I S E R B E M A Q U I
PA S S O 2 :
D E F I N A Q U E M VA I S E R A P R I M E I R A T E L A
U I W I N D O W
P R I M E I R A T E L A D O
A P P
w i n d o w. ro o t V i e w C o n t ro l l e r = V i e w C o n t ro l l e r ( )
PA S S O 2 :
D E F I N A Q U E M VA I S E R A P R I M E I R A T E L A
U I W I N D O W
P R I M E I R A T E L A D O
A P P
Se quiser que comece com uma controller, é a mesma coisa
C O N T R O L L E R
w i n d o w. ro o t V i ew C o n t ro l l e r =
U I N av i g a t i o n C o n t ro l l e r ( ro o t V i ew C o n t ro l l e r : V i ew C o n t ro l l e r ( ) )
J E I T O R U I M
PA S S O 3 :
C R I E S U A I N T E R FA C E
Primeiro crie seu elemento
l e t t i t l e L a b e l = U I L a b e l ( )
Depois configure ele
s e l f . l a b e l . t e x t C o l o r =
U I C o l o r. w h i t e 

s e l f . l a b e l . t e x t = “ Te s t e ! ” 

Adicione ele à sua view
s e l f . v i e w. a d d S u b v i e w ( s e l f . l a b e l )
Desative design automático
s e l f . l a b e l . t r a n s l a t e s A u t o re s i z i n g
M a s k I n t o C o n s t r a i n t s = f a l s e
Adicione autolayout
PA S S O 3 :
C R I E S U A I N T E R FA C E
Crie e configure seu elemento
a partir de uma lazy
J E I T O B O M
l e t l a b e l : U I L a b e l = {
l e t l a b e l = U I L a b e l ( )
l a b e l . n u m b e r O f L i n e s = 0
l a b e l . t r a n s l a t e s A u t o re s i z i n g
M a s k I n t o C o n s t r a i n t s = f a l s e
re t u r n l a b e l
} ( )
Crie uma função para
adicionar todos os objetos a
view
f u n c s e t u p V i e w s ( ) {
a d d S u b v i e w ( l a b e l )
}
Adicione o autolayout nessa função
Veja que eu já desativei o design automático
f u n c s e t u p V i e w s ( ) {
a d d S u b v i e w ( l a b e l )
a u t o l a y o u t ( )
}
PA S S O 3 :
C R I E S U A I N T E R FA C E Seu app precisa ser muito
bem planejado, já que se os
objetos não forem iguais não
vai funcionar bem
Existe o ,
que é fazer com classes,
porém, existe um
problema nisso…
J E I T O M A R AV I L H O S O
A forma de fazer é
praticamente a mesma da
passada, porém,
modularizada, por isso que
ela é melhor
PA S S O 4 :
A U T O L AY O U T
view.addConstraint(NSLayoutConstraint.init(item: label,
attribute: .centerX, relatedBy: .equal, toItem: view,
attribute: .centerX, multiplier: 1, constant: 1))
label.widthAnchor.constraint(equalToConstant: 100).isActive = true
label.heightAnchor.constraint(equalToConstant: 50).isActive = true
Não é tão difícil assim…
R E N ATA FA R I A
G R A D U A N D A E M S M D
E X - E S TÁ G I A R I A D O A P P L E
D E V E L O P E R A C A D E M Y
W W D C 1 7 S C O L A R S H I P
C H E G A M O S A O F I M !
Se quiser saber mais …
G O PA L S H A R M A
L E T S B U I L D T H AT A P P
B O B T H E D E V E L O P E R
P E S S O A S : A P P L E R E F E R E N C E :
U I K I T
N S L AY O U T C O N S T R A I N T
T H E A P P L I F E C Y C L E
renata.faria.gomes@hotmail.com
Renata Faria Gomes

Mais conteúdo relacionado

Semelhante a Motivos para abandonar a Interface Builder

Semelhante a Motivos para abandonar a Interface Builder (20)

Midia kit
Midia kitMidia kit
Midia kit
 
Calendário+2023+Para+Laceiras+.pdf
Calendário+2023+Para+Laceiras+.pdfCalendário+2023+Para+Laceiras+.pdf
Calendário+2023+Para+Laceiras+.pdf
 
13 dicas para detonar nas apresentações de Powerpoint
13 dicas para detonar nas apresentações de Powerpoint13 dicas para detonar nas apresentações de Powerpoint
13 dicas para detonar nas apresentações de Powerpoint
 
Automação cefet
Automação   cefetAutomação   cefet
Automação cefet
 
Git e Gitlab por Samir C Costa Iplanfor
Git e Gitlab por Samir C Costa IplanforGit e Gitlab por Samir C Costa Iplanfor
Git e Gitlab por Samir C Costa Iplanfor
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pdf
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pdfTECLADO ERGONÓMICO Y PANTALLAS TACTILES.pdf
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pdf
 
CCN PPT.pdf
CCN PPT.pdfCCN PPT.pdf
CCN PPT.pdf
 
Poke Trainers, porque Pokémon não é apenas um jogo
Poke Trainers, porque Pokémon não é apenas um jogoPoke Trainers, porque Pokémon não é apenas um jogo
Poke Trainers, porque Pokémon não é apenas um jogo
 
Pensando a Experiência do Usuário em Projetos Plone - Plone Symposium South A...
Pensando a Experiência do Usuário em Projetos Plone - Plone Symposium South A...Pensando a Experiência do Usuário em Projetos Plone - Plone Symposium South A...
Pensando a Experiência do Usuário em Projetos Plone - Plone Symposium South A...
 
Service Jam Curitiba 2016
Service Jam Curitiba 2016Service Jam Curitiba 2016
Service Jam Curitiba 2016
 
Anguie Natalia Tinjacá Pantoja. Mantenimiento (1)
Anguie Natalia Tinjacá Pantoja. Mantenimiento (1)Anguie Natalia Tinjacá Pantoja. Mantenimiento (1)
Anguie Natalia Tinjacá Pantoja. Mantenimiento (1)
 
VTEX Training Day Alessandro Gil
VTEX Training Day   Alessandro GilVTEX Training Day   Alessandro Gil
VTEX Training Day Alessandro Gil
 
20220718_UIMP_Ecity.pdf
20220718_UIMP_Ecity.pdf20220718_UIMP_Ecity.pdf
20220718_UIMP_Ecity.pdf
 
Convencao2014 emailmkt 11_dez13_02
Convencao2014 emailmkt 11_dez13_02Convencao2014 emailmkt 11_dez13_02
Convencao2014 emailmkt 11_dez13_02
 
Metodologia SCRUM AGILE + VSTS + GIT
Metodologia SCRUM AGILE + VSTS + GITMetodologia SCRUM AGILE + VSTS + GIT
Metodologia SCRUM AGILE + VSTS + GIT
 
Webinar : Vous avez une boutique en ligne Prestahop : grâce à Selldorado fait...
Webinar : Vous avez une boutique en ligne Prestahop : grâce à Selldorado fait...Webinar : Vous avez une boutique en ligne Prestahop : grâce à Selldorado fait...
Webinar : Vous avez une boutique en ligne Prestahop : grâce à Selldorado fait...
 
Google Cloud Platform
Google Cloud PlatformGoogle Cloud Platform
Google Cloud Platform
 
Apostila pontos utilizados no croche
Apostila pontos utilizados no crocheApostila pontos utilizados no croche
Apostila pontos utilizados no croche
 
Seis sigma passo a passo
Seis sigma passo a passoSeis sigma passo a passo
Seis sigma passo a passo
 
Eoca cibele
Eoca cibeleEoca cibele
Eoca cibele
 

Mais de Federal University of Ceará

Mais de Federal University of Ceará (6)

Gerente de Projetos VS de Produtos
Gerente de Projetos VS de ProdutosGerente de Projetos VS de Produtos
Gerente de Projetos VS de Produtos
 
Trabalho mais leve, divertido e eficiente com gamificação
Trabalho mais leve, divertido e eficiente com gamificaçãoTrabalho mais leve, divertido e eficiente com gamificação
Trabalho mais leve, divertido e eficiente com gamificação
 
Ux pt2
Ux pt2Ux pt2
Ux pt2
 
Flutter
FlutterFlutter
Flutter
 
Introdução a iOS (grupo de estudos iStudies)
Introdução a iOS (grupo de estudos iStudies)Introdução a iOS (grupo de estudos iStudies)
Introdução a iOS (grupo de estudos iStudies)
 
Workshop impressão 3d
Workshop impressão 3dWorkshop impressão 3d
Workshop impressão 3d
 

Motivos para abandonar a Interface Builder

  • 1. P O R R E N ATA FA R I A Abandonando o Interface Builder
  • 2. Q U A N D O T U D O C O M E Ç O U …
  • 3. Q U A N D O T U D O C O M E Ç O U … E I V O U U S A R A S T O RY B O A R D V I U ! ! ! A F F, D E N O V O ? ? P E R A Í E N TÃ O Q U E V O U D A R L O G O M E U P U S H
  • 4. Q U A N D O T U D O C O M E Ç O U … V I S H , F O I M A L ! D E U M E R G E F O I ? M E N I N A ! P O R Q U E T U N Ã O M E D I S S E Q U E T I N H A A LT E R A D O A S T O RY B O A R D ? ? ? ? A I N D A B E M Q U E S O U W E B
  • 5. N Ã O É P O S S Í V E L Q U E E M E M P R E S A G R A N D E S E J A D E S S A F O R M A … ಠ_ಠ E A I E U D E S C O B R I Q U E É P I O R D O Q U E E U P E N S E I …
  • 6. A I N T E R FA C E B U I L D E R … demora……… demora……… demora……… Haja paciência! Quando você clica para abrir E quando tem muitas telas para buildar
  • 7. = Se você fizer essa tela Você também terá que fazer a próxima, mesmo que seja igual O que é péssimo se você precisar reutilizar toda hora o código Mas é ainda mais divertido tentar explicar seu layout para seus colegas!
  • 8. L I N H A S L I N H A S L I N H A S Quanto mais telas, mais linhas e mais confuso Se você tiver muitas telas, boa sorte memorizando a posição de cada uma
  • 9. Se não tiver cuidado na hora de modificar seu layout, pode esperar muitos erros! Além de te tomar bastante tempo, modificando de um por um Cuidado com identificadores!
  • 10. M A S E X I S T E M M O M E N T O S E M O M E N T O S Prós de Storyboards T E A J U D A A P R O T O T I PA R , S E V O C Ê N Ã O T E M U M D E S I G N P R O N T O A P P S P E Q U E N O S F I C A M P R O N T O S M A I S R Á P I D O S
  • 11. E como fazer o código sem interface builder?
  • 12. PA S S O Z E R O : D E S AT I V E A I N T E R FA C E N O S A J U S T E S D O A P P
  • 13. PA S S O 1 : E N T E N D A O C I C L O D E V I D A D O S E U A P P Lembre-se que o App Delegate é o primeiro a buildar! E é nele que você chamará sua primeira tela VA I S E R B E M A Q U I
  • 14. PA S S O 2 : D E F I N A Q U E M VA I S E R A P R I M E I R A T E L A U I W I N D O W P R I M E I R A T E L A D O A P P w i n d o w. ro o t V i e w C o n t ro l l e r = V i e w C o n t ro l l e r ( )
  • 15. PA S S O 2 : D E F I N A Q U E M VA I S E R A P R I M E I R A T E L A U I W I N D O W P R I M E I R A T E L A D O A P P Se quiser que comece com uma controller, é a mesma coisa C O N T R O L L E R w i n d o w. ro o t V i ew C o n t ro l l e r = U I N av i g a t i o n C o n t ro l l e r ( ro o t V i ew C o n t ro l l e r : V i ew C o n t ro l l e r ( ) )
  • 16. J E I T O R U I M PA S S O 3 : C R I E S U A I N T E R FA C E Primeiro crie seu elemento l e t t i t l e L a b e l = U I L a b e l ( ) Depois configure ele s e l f . l a b e l . t e x t C o l o r = U I C o l o r. w h i t e 
 s e l f . l a b e l . t e x t = “ Te s t e ! ” 
 Adicione ele à sua view s e l f . v i e w. a d d S u b v i e w ( s e l f . l a b e l ) Desative design automático s e l f . l a b e l . t r a n s l a t e s A u t o re s i z i n g M a s k I n t o C o n s t r a i n t s = f a l s e Adicione autolayout
  • 17. PA S S O 3 : C R I E S U A I N T E R FA C E Crie e configure seu elemento a partir de uma lazy J E I T O B O M l e t l a b e l : U I L a b e l = { l e t l a b e l = U I L a b e l ( ) l a b e l . n u m b e r O f L i n e s = 0 l a b e l . t r a n s l a t e s A u t o re s i z i n g M a s k I n t o C o n s t r a i n t s = f a l s e re t u r n l a b e l } ( ) Crie uma função para adicionar todos os objetos a view f u n c s e t u p V i e w s ( ) { a d d S u b v i e w ( l a b e l ) } Adicione o autolayout nessa função Veja que eu já desativei o design automático f u n c s e t u p V i e w s ( ) { a d d S u b v i e w ( l a b e l ) a u t o l a y o u t ( ) }
  • 18. PA S S O 3 : C R I E S U A I N T E R FA C E Seu app precisa ser muito bem planejado, já que se os objetos não forem iguais não vai funcionar bem Existe o , que é fazer com classes, porém, existe um problema nisso… J E I T O M A R AV I L H O S O A forma de fazer é praticamente a mesma da passada, porém, modularizada, por isso que ela é melhor
  • 19. PA S S O 4 : A U T O L AY O U T view.addConstraint(NSLayoutConstraint.init(item: label, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1, constant: 1)) label.widthAnchor.constraint(equalToConstant: 100).isActive = true label.heightAnchor.constraint(equalToConstant: 50).isActive = true Não é tão difícil assim…
  • 20. R E N ATA FA R I A G R A D U A N D A E M S M D E X - E S TÁ G I A R I A D O A P P L E D E V E L O P E R A C A D E M Y W W D C 1 7 S C O L A R S H I P C H E G A M O S A O F I M ! Se quiser saber mais … G O PA L S H A R M A L E T S B U I L D T H AT A P P B O B T H E D E V E L O P E R P E S S O A S : A P P L E R E F E R E N C E : U I K I T N S L AY O U T C O N S T R A I N T T H E A P P L I F E C Y C L E renata.faria.gomes@hotmail.com Renata Faria Gomes