Разбейте CGRect на 4 переменные - PullRequest
0 голосов
/ 25 июня 2010

Учитывая, что drawRect принимает CGRect 'rect', как я могу создать 4 отдельные переменные CGFloat с отдельными значениями rect (x, y, width, height)?Мне нужно использовать переменные на индивидуальной основе для определения определенных масштабов рисования в методе 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 ]

4 голосов
/ 25 июня 2010

Я бы посоветовал вам освежить некоторые базовые материалы 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);
 }
3 голосов
/ 25 июня 2010
 CGFLoat x = rect.origin.x;
 CGFLoat y = rect.origin.y;
 CGFloat width = rect.size.width;
 CGFloat height = rect.size.height;
0 голосов
/ 25 июня 2010

Структура CGRect определяется как таковая

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

Что означает, что вы можете сделать это:

rect.origin.x
rect.origin.y
rect.size.width
rect.size.height
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...