Articoli con Tag ‘CGSize’

UIImage: utili snippet

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...

Objective-C: un’alternativa all’uso di CGRectMake

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...


Stop SOPA