2010-06-25 3 views
0

Étant donné que drawRect prend un 'rect' CGRect, comment puis-je créer 4 variables CGFloat distinctes avec les valeurs individuelles de rect (x, y, width, height)? J'ai besoin d'utiliser les variables sur une base individuelle pour déterminer certaines échelles de dessin dans la méthode drawRect.Rompre un CGRect en 4 variables

- (void)drawRect:(CGRect)rect { 
CGFLoat x = ***x value of rect***; 
CGFLoat y = ***y value of rect***; 
CGFloat width = ***width value of rect***; 
CGFloat height = ***height value of rect***; 
} 

Merci d'avance pour votre aide!

Répondre

4

Je vous suggère de vous brosser sur certains matériaux de base C comme la question est assez élémentaire de structure en C (pas de problème - nous étions tous là une fois).

Vu:

struct CGPoint { 
    CGFloat x; 
    CGFloat y; 
}; 
typedef struct CGPoint CGPoint; 

/* Sizes. */ 

struct CGSize { 
    CGFloat width; 
    CGFloat height; 
}; 
typedef struct CGSize CGSize; 

/* Rectangles. */ 

struct CGRect { 
    CGPoint origin; 
    CGSize size; 
}; 
typedef struct CGRect CGRect; 

Vous voulez: - (void) drawRect: (CGRect) rect {x = CGFLoat rect.origin.x; CGFLoat y = rect.origin.y; CGFloat width = rect.size.width; CGFloat height = rect.size.height; }

Ou, mieux encore, parce qu'il ya des fonctions pour une telle folie:

- (void)drawRect:(CGRect)rect { 
    CGFLoat x = CGRectGetMinX(rect); 
    CGFLoat y = CGRectGetMinY(rect); 
    CGFloat width = CGRectGetWidth(rect); 
    CGFloat height = CGRectGetHeight(rect); 
} 
+0

Excellent, merci! Je sais que mes compétences sont rouillées, tellement à apprendre – Timbo

+0

Yup - pas de soucis - comme je l'ai dit, nous avons tous été là. Xcode fait généralement un excellent travail de vous amener à la définition de quelque chose si vous cmd-dbl-cliquez sur le type. – bbum

3
CGFLoat x = rect.origin.x; 
CGFLoat y = rect.origin.y; 
CGFloat width = rect.size.width; 
CGFloat height = rect.size.height; 
+1

Utilisez les fonctions, l'homme! – bbum

+0

gentil, merci! – Timbo

0

La structure d'un CGRect est défini comme tel

struct CGRect { 
    CGPoint origin; 
    CGSize size; 
}; 
typedef struct CGRect CGRect; 

Ce qui signifie que vous pouvez faire ceci:

rect.origin.x 
rect.origin.y 
rect.size.width 
rect.size.height 
+0

Bit d'une déclaration incomplète, thar. Suppose que vous savez ce qu'est un CGPoint et un CGSize. – bbum

+0

d'accord, votre réponse est beaucoup plus complète :) – slf

Questions connexes