Domanda

Android ha un bel modo di definire immagini estensibili chiamati nove patch. Vedi questi documenti per una descrizione del concetto . L'idea è di circondare un'immagine png con un bordo di 1 pixel in cui è possibile definire le aree estensibili e le dimensioni imbottiture dell'immagine. Questo è assolutamente brillante e vorrei utilizzare l'idea nel mio iPhone app. Prima di scrivere il mio nove patch per UIImage loader ho pensato di vedere se ne esiste già. Google non prodotto risultati così non ho molte speranze, ma non fa male a chiedere, giusto? : -)

Modifica Ragazzi, apprezzo le risposte, ma so di stretchableImageWithLeftCapWidth.... Sto cercando il codice che prende una @"foo.9.png" percorso e restituisce un UIImage estensibile. Questo codice sarà senza dubbio utilizzare stretchableImageWithLeftCapWidth... internamente. Sono sicuro che avrei potuto scrivere il codice stesso utilizzando tale metodo. Ma sto chiedendo se qualcun altro ha già fatto.

È stato utile?

Soluzione

ho ricevuto una e-mail da un software Tortuga22 che mi ha informato che essi hanno creato un tale libreria e rilasciato sotto la licenza Apache:

Annuncio: http://blog.tortuga22.com / 2010/05/31 / annunciando-tortuga-22-ninepatch /

Il codice sorgente: http://github.com/tortuga22/Tortuga22-NinePatch

Esempio di utilizzo:

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

Altri suggerimenti

Anche guardare proprietà contentStretch di UIView. E 'più robusto e ben educati che stretchableImageWithLeftCapWidth. In pratica, funziona semplicemente definendo il rettangolo estensibile all'interno della vostra immagine e la creazione automatica di una scala di nove patch. Questo rettangolo interno può essere qualsiasi cosa - non hanno nemmeno bisogno di essere al centro dell'immagine. Inoltre a differenza stretchableImage questo metodo correttamente ridursi grafica e si comportano come previsto per la grafica con illuminazione o lucida. Non riesco a pensare di qualsiasi applicazione nel mondo reale in cui si vorrebbe più di questo.

Si UIImage non supporta qualcosa di simile. Vedere

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight e la documentazione per leftCapWidth e topCapHeight

sostanzialmente l'immagine non è allungata nella zona leftCapWidth pixel dal bordo sinistro e destro e pixel topCapHeight dalla parte superiore e la parte inferiore. Quando l'immagine viene scalata l'area all'interno di questi limiti è soggetto a stiro.

Tutte le UIImage supportano in modo nativo. Di default l'intero immagini è estensibile, ma è possibile impostare le protezioni con le proprietà leftCapWidth e topCapHeight oppure si possono generare uno da un UIImage esistente con il metodo - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight.

Da notare che nella implementazione di Apple, quando si imposta uno o entrambi di questi valori, l'area estensibile è costretto ad essere un singolo pixel di alta / larghezza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top