La risposta a questa domanda è questa. Diciamo che hai un'immagine estensibile che si estende solo in larghezza e ha l'altezza fissa (per ragioni di semplicità).
L'immagine è 31px larghezza (15 px dimensioni fisse - non allungare -, 1px sarà allungata)
Supponendo che il vostro livello è un CALayer sottoclasse il metodo init dovrebbe assomigliare a questa:
- (id)init
{
self = [super init];
if (self) {
UIImage *stretchableImage = (id)[UIImage imageNamed:@"stretchableImage.png"];
self.contents = (id)stretchableImage.CGImage;
self.contentsScale = [UIScreen mainScreen].scale; //<-needed for the retina display, otherwise our image will not be scaled properly
self.contentsCenter = CGRectMake(15.0/stretchableImage.size.width,0.0/stretchableImage.size.height,1.0/stretchableImage.size.width,0.0/stretchableImage.size.height);
}
return self;
}
come da documentazione il contenutoCentro rettangolo deve avere valori tra 0-1.
Per impostazione predefinita, il rettangolo dell'unità (0.0,0.0) (1.0,1.0) consente di ridimensionare l'intera immagine. Se il rettangolo si estende al di fuori del rettangolo unitario, il risultato non è definito.
Questo è tutto. Speriamo che qualcun altro lo trovi utile e risparmierà del tempo di sviluppo.
fonte
2012-08-13 04:23:44
L'ho trovato utile. Grazie! – duci9y
È preferibile utilizzare la scala dell'immagine. –
La soluzione suggerita non funzionerà su iPhone 6 plus se non è presente alcuna variante @ 3x dell'immagine. È meglio usare la proprietà di scala dell'immagine. 'self.contentScale = strechableImage.scale' Quindi funzionerà anche se non sono presenti tutte le varianti dell'immagine (@ 2x @ 3x). –