2010-06-25 48 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