将CGRect分成4个变量

时间:2010-06-25 03:19:34

标签: objective-c

鉴于drawRect采用CGRect'rect',如何使用rect(x,y,width,height)的各个值创建4个单独的CGFloat变量?我需要单独使用变量来确定drawRect方法中的某些绘图比例。

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

提前感谢您的帮助!

3 个答案:

答案 0 :(得分: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;

你想:      - (void)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);
 }

答案 1 :(得分:3)

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

答案 2 :(得分:0)

CGRect的结构定义为

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

这意味着你可以这样做:

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