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é ... ![]()











Curiosité ': Si vous voulez apprendre Obj-C, par exemple, zéro ou presque, dans laquelle les publications que vous pouvez «tourner?
@ Cristian: recherche sur Google Book (Google Books), il existe de nombreuses ressources (en anglais) est pratiquement complète.
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 chosesCGRectMakeest 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.
@ 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.