L’oggetto UIImage, insieme a UIImageView, sono molto utilizzati nello sviluppo di applicazioni per Apple iPhone. Ecco dunque alcuni utili snippet-code effettuare una serie di elaborazioni comuni:
Combinare due (o più) immagini
1 2 3 4 5 6 7 8 9 10 11 12
| - (UIImage *)combineImage:(UIImage *)imageA imageB:(UIImage *)imageB {
UIGraphicsBeginImageContext(imageA.size);
[imageA drawInRect:CGRectMake(0, 0, imageA.size.width, imageA.size.height)];
[imageB drawInRect:CGRectMake(0, 0, imageB.size.width, imageB.size.height)];
UIImage *combinatedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return combinatedImage;
} |
Continua...
CGRectMake() è una funzione (in realtà è un inline #define) molto usata soprattutto quando si creano da codice oggetti grafici o di interfaccia utente. Il suo utilizzo è quindi spesso legato all’inizializzazione di componenti UIKit, ma anche a semplici UIView o UIImageView. CGRectMake() restituisce una struct (struttura di tipo) CGRect:
1 2 3 4 5
| struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect; |
Che a sua volta è composta da due diverse struct CGPoint e CGSize:
1 2 3 4 5 6 7 8 9 10 11 12 13
| struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
/* Sizes. */
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize; |
Che, a loro volta ancora, contengono tipi CGFloat, ovvero tipi float. Se andiamo ad analizzare il codice della CGRectMake() troviamo:
1 2 3 4 5 6 7 8
| CG_INLINE CGRect
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = x; rect.origin.y = y;
rect.size.width = width; rect.size.height = height;
return rect;
} |
Ne deriva, quindi, che questa parte di codice:
1 2 3 4
| UIButton *gbutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
gbutton.frame = CGRectMake (12,409,100,40);
[gbutton setTitle:@"Press" forState:UIControlStateNormal];
[mainWindow addSubview:gbutton]; |
Potrebbe, a ragione, essere scritta anche come:
1 2 3 4
| UIButton *gbutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
gbutton.frame = (CGRect) {12,409,100,40};
[gbutton setTitle:@"Press" forState:UIControlStateNormal];
[mainWindow addSubview:gbutton]; |
Giusto per velocizzare un po’ l’esecuzione del codice…
Continua...
Ultimi Commenti
Marco: Ti ringrazio moltissimo, mi hai illuminato
ho risolto impostando [cc_objc] //OptionViewController.m -...
Giovambattista Fazioli: @Marco: Ti consiglio un approccio credo più corretto. Se hai eseguito il subclass del tab...
Marco: Scusa lo spam.. ho notato che c’è un errore.. ecco la correzione [cc_objc] /** PrimaClasse.h **/ #import...
Marco: dimenticato.. in [cci]OptionViewController[/cci ] il [cci]@syntetize[/cci] del delegato l’ho messo
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...