07 Fev, 2013 20:08
Utilizando imagens redimensionáveis no iOS - Parte 2
Para isso, você vai precisa usar o Interface Builder e editar a imagem direto no XIB. Vamos ao exemplo.
Suponha que eu tenha a imagem abaixo e quero usá-la como fundo de diversos elementos na tela.
Devo importá-la no meu projeto, adicionar uma UIImageView no meu XIB e definir a imagem na propriedade image. Vejamos o que acontece se colocarmos a UIImageView com dimensões diferentes da imagem original.
Repare que a imagem fica distorcida por causa do tamanho incompatível com o formato original da imagem.
Para resolvermos o problema, precisamos editar os valores de Stretching da UIImageView de acordo com a nossa necessidade. Esses valores variam de 0 a 1 e representam o percentual da área redimensionável em relação à área total. Esses valores estão associados à propriedade contentStretch que descrevi no post anterior.
O primeiro passo é calcular a área da imagem que deve ser redimensionada. Para isso, precisamos saber o tamanho da imagem total (W x H), a origem da área redimensionável da imagem (x, y) e as dimensões dessa área (w x h). Veja a ilustração abaixo (a área marcada em vermelho representa a área que queremos redimensionar).
Com esses valores, conseguimos definir os valores de Stretching com as fórmulas abaixo:
Sx = x/W
Sy = y/H
Sw = w/W
Sh = h/H
Fazendo as contas, temos:
Sx = 0,17
Sy = 0,026
Sw = 0,468
Sh = 0,919
Preenchendo esses valores no Interface Builder, a imagem ficará como o esperado.
Limitações
Infelizmente, o truque acima não funciona com UIButtons e a solução nesse caso é via código, como havia explicado no post anterior.