2011-12-01 13 views
12

Il codice seguente Piastrelle l'area dell'immagine all'interno dei riquadri specificati:Come fare [UIImage resizableImageWithCapInsets:] prima di iOS5?

UIEdgeInsets imgInsets = UIEdgeInsetsMake(10.f, 5.f, 13.f, 44.f); 
UIImage *image = [[UIImage imageNamed:@"fileName"] resizableImageWithCapInsets:imgInsets]; 

Tuttavia questo è disponibile solo in iOS5. Come posso ottenere lo stesso risultato per la compatibilità con iOS5 precedente?

[UIImage stretchableImageWithLeftCapWidth: topCapHeight:] non è appropriato per quanto ho capito, perché presuppone che l'area piastrella sia larga 1px. In altre parole, non affianca, si allunga. Pertanto non funziona con i modelli, solo con immagini a colori singoli. Questo è dimostrato nello screenshot qui sotto.

Quindi c'è [UIColor colorWithPatternImage:], ma questo presuppone che l'intera immagine debba essere affiancata, non consente di inserire degli insiemi che devono rimanere chiusi.

Qualsiasi aiuto apprezzato, grazie.

.

enter image description here

+0

Ho esattamente lo stesso problema. Da un lato, evviva di averlo risolto in iOS 5. D'altra parte, sto cercando di trovare un modo semplice per aggiungere questa funzionalità, quindi funziona su iOS 4. Che cosa hai deciso di fare? –

+0

Forse era il caso che prima di questa caratteristica i grafici erano solo impegnati a costruire pulsanti ?! – Ellis

risposta

2

Sto cercando una soluzione anche a questo. A questo punto penso che userò lo respondsToSelector:@selector(resizableImageWithCapInsets:) sulla matrice UII originale per vedere se il metodo è disponibile. In caso contrario, quindi utilizzare l'immagine estensibile.

Sto ancora cercando una soluzione migliore, e se uno viene su, io aggiornare la risposta.