Esses dias estava codando, evoluindo meu projeto pessoal, quando precisei analisar mais profundamente um componente que eu estava utilizando.
Analisando o código, entendendo o fluxo, me deparei com uma linha que despertou minha atenção para algo curioso:
@”%@:|-%lu-[%@]-%lu-|”
Muitos devem saber do que se trata e, até então, eu tinha uma vaga noção. Mas calma! Vamos contextualizar tudo.
Quando “abandonei” o mundo Web e resolvi partir para mobile, fui com a intenção de ser um cara chato. Sim, chato. Daqueles que não se contentam em ser apenas um número na estatística, mas um cara que busca conhecimento em tudo; nos mínimos detalhes.
De forma prática, se eu precisasse arrastar um button object para a minha view, eu entrava no iOS Developer Library e buscava saber tudo sobre o tal UIButton e tentava seguir alguns passos de estudo:
O que é? Como vive? Do que se alimenta?
- Como eu crio?
- Como eu customizo?
- Quais as variações de estado?
E passava por 3 formas de uso:
- Storyboard – mamão com açúcar
- XIB – interessante
- Código – desafiador
Bem, este era o meu roteiro básico para todo elemento novo que aparecia na minha frente.
O bacana é que conforme eu buscava o entendimento em pontos “triviais”, outros mais complexos apareciam no meio do caminho, tornando o processo evolutivo mais atrativo.
Voltando ao princípio…
Analisando o código, entendendo o fluxo, me deparei com uma linha que despertou minha atenção para algo curioso:
@”%@:|-%lu-[%@]-%lu-|”
Grande parte dos iOSers hoje, ou a maioria que está começando a trilhar o caminho, deve ter o “câmbio automático” do ~clica e arrasta~ e esta facilidade é muito utilizada, principalmente quando vamos implementar o auto layout em nossa tela, definindo constraints, dimensões e margens relativas com o objetivo de fazer nosso layout se adaptar a diversas variações de tela e modo de visualização.
NSString *stringLocalFormat = [NSString stringWithFormat: @"%@:|-%lu-[%@]-%lu-|", boolIsVertical?@"H":@"V", (unsigned long)(boolIsVertical?hMargin:vMargin), stringKey, (unsigned long)(boolIsVertical?hMargin:vMargin)];
Bem, o código acima configura uma constraint e ao me deparar com esta linha, notei que eu era um grande refém do meu storyboard e percebi o quanto eu corria da ideia de ter que definir constraints via código.
Mas o código acima não configura uma simples constraint. Ele configura uma constraint de forma dinâmica, variável e genérica!
Fazia todo sentido e eu jamais conseguiria obter o resultado que esperava, se eu não largasse o tão saboroso osso chamado “Storyboard”.
Uma das grandes vantagens da IDE de desenvolvimento iOS é a facilidade com que você cria e organiza os elementos visuais do seu app.
Mas gostaria de chamar sua atenção para que você não seja um refém do Storyboard. Há muita vida lá fora e respirar novos ares vai te ajudar a fazer coisas maiores e melhores.
Eu possuo muitos vícios ainda que preciso largar e, aos poucos, vou conseguindo ficar menos dependente.
Claro, como em qualquer situação, não existe um certo e um errado. Mas como um desenvolvedor em evolução, percebo que quanto mais mantivermos mente aberta, mais fácil e divertido é nosso crescimento, principalmente quando temos que decidir se vamos clicar e arrastar, ou sentar o dedo no código.
É um mestre ao trabalhar com XIB, Storyboard? Seja um mestre também quando precisar trabalhar os elementos no código. É fera utilizando os elementos no código? Seja fera também quando o Storyboard for tornar sua feature mais simples.
Não seja um refém! Seja livre pra poder escolher o que melhor se encaixa em seu projeto em vez de escolher ou se limitar no que melhor você sabe.