2010-06-25 26 views
0

鉴于drawRect需要CGRect'rect',我怎样才能创建4个独立的CGFloat变量,其中包含rect(x,y,width,height)的各个值?我需要单独使用变量来确定drawRect方法中的某些绘图比例。将CGRect分解为4个变量

- (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***; 
} 

在此先感谢您的帮助!

回答

4

我建议你刷上一些基本的C材料问题是非常基本的C结构的东西(没什么大不了的 - 我们都在那里)。

考虑:

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; 

你想: - (空)的drawRect:(的CGRect)RECT { CGFloat的X = rect.origin.x; CGFLoat y = rect.origin.y; CGFloat width = rect.size.width; CGFloat height = rect.size.height; }

或者,更好的,因为有这样的疯狂功能:

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

非常好,谢谢! 我知道我的技能很生疏,学得很多 – Timbo 2010-06-25 03:44:02

+0

是的 - 没有问题 - 就像我说的,我们都在那里。如果你用cmd-dbl单击类型的话,Xcode通常可以很好地把你定义到某些东西上。 – bbum 2010-06-25 04:16:06

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

使用的功能,伙计! – bbum 2010-06-25 03:26:19

+0

不错,谢谢! – Timbo 2010-06-25 03:42:52

0

一个的CGRect的结构被定义为这样

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

这意味着你可以这样做:

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

不完整声明的位,thar。假设你知道什么是CGPoint和CGSize。 – bbum 2010-06-25 03:27:19

+0

同意了,你的答案要完整得多:) – slf 2010-06-26 14:56:22