Ridimensionare l’ampiezza di un immagine con UIImage o UIImageView

Attenzione: Questo è un articolo tecnico dedicato alla programmazione iPhone, quindi per programmatori che conoscono l’SDK della Apple e il linguaggio di programmazione Objective-C.

Il metodo più semplice è quello di utlizzare un oggetto di tipo UIImageView. UIImageView automaticamente ridimensiona l’immagine che gli viene passata adattandola alle proprie dimensioni.

Codice:

UIImage *image = [ UIImage imageNamed: @”immagine.png” ];
UIImageView *imageView = [ [ UIImageView alloc ] initWithImage: image ];
imageView.frame = CGRectMake(0.0f, 0.0f, 100.0f, 60.0f); // Imposta l’ampiezza del quadrato all’interno del quale deve essere inserito UIImage .

[ self.view addSubview: imageView ]; // Inserisce l’immagine all’interno di self.view.

Se non impostate un frame, UIImageView conterrà l’immagine originale con posizione 0.0f, 0.0f

Il secondo metodo che vi presentiamo è quello di utilizzare un oggetto di tipo UIView. Prima dovete creare un sottoclasse di UIView e in seguito sovrascrivere il metodo -drawRect. Ecco un esempio:

– (void)drawRect:(CGRect)rect;
{
UIImage *image = [ UIImage imageNamed: @”immagine.png” ];

[ image drawInRect: rect ]; // Inserisce l’immagine all’interno della UIView.

//[ image drawInRect: CGRectMake(0.0f, 0.0f, 100.0f, 60.0f) ]; // In alternativa è possibile inserire l’immagine all’interno di un rettangolo

}

Vi ricordiamo che non è necessario preoccuparsi di chiamare il metodo -drawRect: dato che quest’ultimo verrà eseguito automaticamente una volta che l’oggetto UIView diventerà la vista attiva. Se invece avete bisogno di ridisegnare l’oggetto UIView chiamate il metodo -setNeedsDisplay.

In alternativa è possibile utilizzare questa singola riga di codice:

UIImage *img = [[UIImage imageNamed:@”image.png”] _imageScaledToSize:CGSizeMake(32.0f, 32.0f) interpolationQuality:1];