CGRect utils pour manipuler les UIView frame

Afin de déplacer une UIView de 10 pixels sur la droite voici le code à ecrire en Objective-C.

myView.frame = CGRectMake(myView.frame.origin.x + 10,
                         myView.frame.origin.y,
                         myView.frame.size.width,
                         myView.frame.size.height);

Maintenant j’utiliserai uniquement:

myView.x += 10;


Grâce au “category” et @property

Ou bien:

CGRectAddXToView(myView, 10);

Grâve aux macros

Le code source de CGRect Utils est disponible sur github.

Category et @property

Nous devons crée une categorie afin d’ajouter dynamiquement la propriété à la class UIView.
En créeant crette proriété “x” ce crée des getter et setter implicitement pour cette classe.
- (CGFloat)x; //getter
- (void)setX:(CGFloat)x //setter

Maintenant overwritons ces fonction afin d’implémenter le comportement désiré.

UIView+CGRectUtils.h

@interface UIView (CGRectUtils)

@property (nonatomic) CGFloat x;

@end

UIView+CGRectUtils.m

@implementation UIView (CGRectUtils)
- (CGFloat)x {
    return self.frame.origin.x;
}

- (void)setX:(CGFloat)x {
    self.frame = CGRectMake(x, self.frame.origin.y,
                            self.frame.size.width, self.frame.size.height);
}
@end

Puisque nous ajoutons dynamiquement ces fonction à la class UIView “self” est la UIView elle même.

Grâce aux macros

Les macro sont des bouts de code qui vont être remplacer avant que le compilateur ne commence sont travail.
Elle peuvent être utile de les utilisés comme “raccourcis”

#define CGRectAddXToView( v, addX )         v.frame = CGRectMake( v.frame.origin.x+addX, v.frame.origin.y, v.frame.size.width, v.frame.size.height )

Puisque les macro sont instructions précompiler les deux lignes suivantes serons compiler à l’identique:

CGRectAddXToView(myView, 10); // cette ligne est...
myView.frame = CGRectMake( v.frame.origin.x+addX, //...identique à celle-ci
                           v.frame.origin.y,
                           v.frame.size.width,
                           v.frame.size.height );

Conclusion

CGRect Utils est capble de plus. Il peut manipuler le x, y, width, heigh des UIView. Mais aussi manipuler directement des CGRect.
CGRect Utils est disponible sur github.





Laisser un commentaire