Является ли 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 в этом коде, представляют, какой процент изображения будет отображаться в увеличенном виде.
Дайте мне знать, если вам нужны разъяснения.