Objective-C: une alternative à l'utilisation CGRectMake

CGRectMake() est une fonction (en fait une ligne # define) utilisé beaucoup surtout quand vous créez des objets graphiques à partir du code ou de l'interface utilisateur. o UIImageView . CGRectMake() restituisce una struct (struttura di tipo) CGRect : Son utilisation est donc souvent associé composants d'initialisation de UIKit , mais aussi de simples UIView ou UIImageView . CGRectMake() retourne une struct (type de structure) CGRect :

1
2
3
4
5
struct {CGRect
CGPoint origine;
CGSize taille;
};
typedef struct CGRect CGRect;

: Qui à son tour est composée de deux différents struct CGPoint et CGSize :

1
2
3
4
5
6
7
8
9
10
11
12
13
struct {CGPoint
X CGFloat;
CGFloat y;
};
typedef struct CGPoint CGPoint;

Tailles / *. * /

struct {CGSize
Largeur CGFloat;
Hauteur CGFloat;
};
typedef struct CGSize CGSize;

. Cela, en retour, de nouveau, contiennent des types CGFloat ou le type float . Si nous analysons le code de CGRectMake () sont:

1
2
3
4
5
6
7
8
CG_INLINE CGRect
CGRectMake (CGFloat x, y CGFloat, largeur CGFloat, CGFloat hauteur)
{
CGRect rect;
y; rect.origin.x = x, y = rect.origin.y;
height; rect.size.width = largeur, hauteur = rect.size.height;
retour rect;
}

Il s'ensuit donc que ce morceau de code:

1
2
3
4
[ UIButton buttonWithType : UIButtonTypeRoundedRect ] ; UIButton gbutton * = [UIButton buttonWithType: UIButtonTypeRoundedRect];
12 , 409 , 100 , 40 ) ; gbutton.frame = CGRectMake (12, 409, 100, 40);
@ "Press" forState : UIControlStateNormal ] ; [Gbutton setTitle: @ "Presse" Forst: UIControlStateNormal];
gbutton ] ; [MainWindow addSubview: gbutton];

Il pourrait à juste titre être écrite comme:

1
2
3
4
[ UIButton buttonWithType : UIButtonTypeRoundedRect ] ; UIButton gbutton * = [UIButton buttonWithType: UIButtonTypeRoundedRect];
CGRect ) { 12 , 409 , 100 , 40 } ; gbutton.frame = (CGRect) {12, 409, 100, 40};
@ "Press" forState : UIControlStateNormal ] ; [Gbutton setTitle: @ "Presse" Forst: UIControlStateNormal];
gbutton ] ; [MainWindow addSubview: gbutton];

Juste pour accélérer les choses »le code est exécuté ... :)

4 commentaires à "Objective-C: une alternative à l'utilisation CGRectMake"

  1. 27 juillet 2009 , Cristian :

    Curiosité ': Si vous voulez apprendre Obj-C, par exemple, zéro ou presque, dans laquelle les publications que vous pouvez «tourner?

  2. 1 août 2009 Giovambattista Fazioli :

    @ Cristian: recherche sur Google Book (Google Books), il existe de nombreuses ressources (en anglais) est pratiquement complète.

  3. 10 novembre 2011 kheimon:

    De mauvais conseils, je suis désolé. è inline, ma la differenza sarebbe impercettibile anche se fosse una funzione vera e propria). Réduit l'encapsulation de code (ce qui arrive si vous changez la mise en œuvre de CGRectMake ? Mon code fonctionne et votre besoin d'être modifié) et la différence est imperceptible en termes de performance (entre autres choses CGRectMake est inline, mais la différence serait indétectable, même si elle était une fonction réelle).
    Ce conseil incarne parmi d'autres anti-modèle d'optimisation prématurée.

  4. 10 novembre 2011 Giovambattista Fazioli :

    @ Kheimon: Je suis d'accord, ce n'est pas aujourd'hui ne serait jamais utiliser dans un code réel, en particulier en relation avec CGRect , étant donné la all'iOS continue les mises à jour. Toutefois, il est intéressant de montrer comment les structures de ce type peuvent être nécessaires pour linéariser.

Laisser un commentaire

XHTML TAG PERMIS: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CODE D'INSERTION:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL