Альтернатива CGPathGetPathBoundingBox () для iPad (iOS 3.2) - PullRequest
2 голосов
/ 09 августа 2010

Я пытаюсь разобраться, используя QuartzCore для рендеринга полусложных текстовых / градиентных / графических UITableViewCell композитов. К счастью, Opacity позволит мне визуально построить представление, а затем выплюнуть исходный код, чтобы перейти к касанию какао. Проблема в том, что Opacity предполагает, что код работает на iOS 4, что является проблемой, если вы хотите рисовать кварцевые изображения на iPad.

Для меня оскорбительным методом является CGPathGetPathBoundingBox ... не возражает ли кто-нибудь указать мне подходящую альтернативу или обходной путь для этого (предположительно простого) метода?

Если вы хотите иметь какой-то контекст (не каламбур), вот вам:

transform = CGAffineTransformMakeRotation(1.571f);
tempPath = CGPathCreateMutable();
CGPathAddPath(tempPath, &transform, path);
pathBounds = CGPathGetPathBoundingBox(tempPath);
point = pathBounds.origin;
point2 = CGPointMake(CGRectGetMaxX(pathBounds), CGRectGetMinY(pathBounds));
transform = CGAffineTransformInvert(transform);

1 Ответ

3 голосов
/ 09 августа 2010

Альтернативой является итерация по точкам пути и запишите самые левые, самые правые, самые верхние и самые нижние координаты опорных точек самостоятельно, а затем определите исходную точку и размер из этих чисел. .

Вам следует обернуть это в функцию, назвать ее как-то MyPathGetPathBoundingBox и использовать ее до тех пор, пока вы не откажетесь от поддержки iOS 3.x. Это позволит легко переключиться на CGPathGetPathBoundingBox, как только вы сможете.

...