Является ли CGLayer хорошим решением?

Я хочу добавить немного функциональности в свое приложение, и я думаю, что использование CGLayer - лучший способ сделать это, но никогда раньше не делал никаких рисований в Кварце (кроме некоторых базовых руководств).

Мое намерение состоит в том, чтобы показать полный вид изображения, которое будет рисовать мое приложение (основные геометрические фигуры на основе параметров), в верхней половине вида и показать увеличенную часть этого изображения в нижней четверти вида на основе где пользователь коснулся верхнего изображения. Я хочу, чтобы увеличенная часть отображалась в высоком разрешении, поэтому я думаю, что мне следует нарисовать изображение, скажем, на 640 x 640 CGLayer, а затем нарисовать этот полный слой в верхней части экрана 320 x 320 (так масштабируется). вниз, чтобы соответствовать), и соответствующая часть, затронутая пользователем в левом нижнем углу 160 x 160 вида, но без масштабирования, так что вы увидите четверть основного изображения.

Когда пользователь перемещает палец по основному виду, вид части в нижнем левом углу будет перерисован из CGLayer, поэтому рендеринг нового изображения не происходит, только рисование CGLayer.

Может ли кто-нибудь увидеть какие-либо проблемы с этим подходом, которые, возможно, пропустил мой неопытный мозг?

Та, Джулс.

1 ответ

Посмотрите на CALayer и его параметр contentsRect. Это даст вам довольно простой способ сделать именно то, что вы хотите. Вы можете скопировать содержимое слоя вашего изображения в слой с увеличенным видом, например:

[[zoomView layer] setContents:[[tapImageView layer] contents]];

Затем вы устанавливаете contentRect так:

[[zoomView layer] setContentsRect:CGRectMake(x, y, 0.25, 0.25)];

Вы бы вычислили x и y и назвали бы это в touchesMoved. Ширина и высота, которые установлены в 0,25 в этом коде, представляют, какой процент изображения будет отображаться в увеличенном виде.

Дайте мне знать, если вам нужны разъяснения.

Другие вопросы по тегам