Pergunta

Android tem uma boa maneira de definir imagens stretchable chamado de nove patch. Consulte estes docs para uma descrição do conceito . A idéia é cercar uma imagem PNG com uma borda de 1 pixel, onde pode definir as áreas elásticos e as dimensões de preenchimento da imagem. Isto é absolutamente brilhante e eu gostaria de usar a idéia em meu iPhone app. Antes de escrever minha própria nove patch para carregador UIImage eu pensei em ver se já existe. O Google não encontrou nenhum resultado então eu não tenho muita esperança, mas não ferir a perguntar, certo? : -)

EDIT: Gente, eu aprecio as respostas, mas eu sei sobre stretchableImageWithLeftCapWidth.... Eu estou olhando para o código que leva um @"foo.9.png" caminho e retorna um UIImage elástica. Este código irá, sem dúvida, usar stretchableImageWithLeftCapWidth... internamente. Eu tenho certeza que eu poderia escrever o código de mim mesmo usando esse método. Mas eu estou perguntando se alguém já tenha feito isso.

Foi útil?

Solução

Eu recebi um e-mail de software Tortuga22 que me informou que eles criaram uma biblioteca e liberado sob a licença Apache:

Anúncio: http://blog.tortuga22.com / 2010/05/31 / anunciando-tortuga-22-ninepatch /

O código fonte: http://github.com/tortuga22/Tortuga22-NinePatch

Exemplo de utilização:

// loads-and-caches ninepatch and rendered image of requested size
UIImage buttonImg = [TUNinePatchCache imageOfSize:buttonSize 
                                forNinePatchNamed:@"buttonNormalBackground"];
[self.buttonNeedingBackground setImage:buttonImg
                       forControlState:UIControlStateNormal];

Outras dicas

Também olhar para propriedade contentStretch de UIView. É mais robusto e bem-comportado do que stretchableImageWithLeftCapWidth. Basicamente, ele funciona apenas por definir o retângulo elástica dentro de sua imagem e criar automaticamente uma escalado nove patch. Esse retângulo interno pode ser qualquer coisa - ele mesmo não tem que estar no centro da imagem. Além disso, ao contrário stretchableImage este método vai encolher corretamente gráficos e se comportam como esperado para gráficos com iluminação ou brilho. Eu não posso pensar de qualquer aplicação no mundo real onde você iria querer mais do que isso.

Sim UIImage suporta algo parecido. Veja

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight e a documentação para leftCapWidth e topCapHeight

basicamente a imagem não é esticada na área leftCapWidth pixels a partir da borda esquerda e direita e topCapHeight pixels a partir do topo e no fundo. Quando a imagem é dimensionada dentro desses limites área está sujeita ao alongamento.

Todas as imagens UIImage apoiar esta nativamente. Por padrão, as imagens inteiras é extensível, mas você pode definir limites com as propriedades leftCapWidth e topCapHeight ou você pode gerar um de um UIImage existente com o método - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight.

Note que, na execução de maçã, quando você definir um ou ambos destes valores, a área elástica é forçado a ser um único pixel de alta / largura.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top