CGRectMake() ist eine Funktion (eigentlich ein Inline # define) verwendet eine Menge vor allem, wenn Sie Grafik-Objekte aus dem Code oder Benutzeroberfläche zu erstellen. o UIImageView . CGRectMake() restituisce una struct (struttura di tipo) CGRect : Seine Verwendung ist daher oft die Initialisierung Komponenten verbunden UIKit , sondern auch auf einfache UIView oder UIImageView . CGRectMake() gibt ein struct (Struktur-Typ) CGRect :
1 2 3 4 5 | struct {CGRect CGPoint Ursprungs; CGSize Größe; }; typedef struct CGRect CGRect; |
: Die wiederum aus zwei verschiedenen struct zusammen CGPoint und CGSize :
1 2 3 4 5 6 7 8 9 10 11 12 13 | struct {CGPoint CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint; / * Größen. * / struct {CGSize CGFloat Breite; CGFloat Höhe; }; typedef struct CGSize CGSize; |
. Das wiederum, wieder enthalten Typen CGFloat oder Typ float . Wenn wir analysieren den Code von CGRectMake () sind:
1 2 3 4 5 6 7 8 | CG_INLINE CGRect CGRectMake (CGFloat x, y CGFloat, CGFloat Breite, Höhe CGFloat) { CGRect rect; y; rect.origin.x = x, y = rect.origin.y; height; rect.size.width = width, height = rect.size.height; Rückkehr rect; } |
Daraus folgt, dass dieses Stück 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]; |
Es könnte zu Recht geschrieben werden als:
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]; |
Nur um die Dinge zu beschleunigen "der Code ausgeführt wird ... ![]()











Curiosity ': Wenn Sie Obj-C lernen wollen, sagen wir, null oder fast so, in welche Publikationen können Sie an der Reihe?
@ Cristian: Suche auf Google Book (Google Books), gibt es viele Ressourcen (in Englisch) ist nahezu abgeschlossen.
Bad Beratung, tut mir leid. è inline, ma la differenza sarebbe impercettibile anche se fosse una funzione vera e propria). Verringert die Kapselung von Code (der passiert, wenn man die Umsetzung von Change
CGRectMake? Mein Code funktioniert und Ihre Bedürfnisse zu ändern) und der Unterschied ist nicht wahrnehmbar in Bezug auf Leistung (unter anderemCGRectMakeist inline, aber der Unterschied wäre nicht nachweisbar, auch wenn es eine reelle Funktion wurden).Dieser Rat verkörpert unter anderem Anti-Pattern vorzeitige Optimierung.
@ Kheimon: Ich bin damit einverstanden, nicht heute würde nie in einem echten Code zu verwenden, insbesondere in Bezug auf
CGRectangesichts der kontinuierlichen Updates all'iOS. Es ist jedoch interessant zu zeigen, wie structs dieser Art erforderlich sein, um linearisieren werden.