2010-01-27 1 views
3

Я добавляю некоторые функциональные возможности приложения iPhone, и могу использовать некоторую помощь в выборе быстрый/наиболее эффективный/практика подхода лучше всего подходит для решения этой проблемы:Самый быстрый/самый эффективный способ рисования движущихся пузырьков речи на экране - CoreAnimation, Quartz2D?

На верхней половине моего экрана, у меня есть пузыри речи (думаю, комикс), которые UIImageViews переводят по экрану (динамическое x & y позиция). Это UIImageView, потому что в качестве фона речевого пузыря есть изображение.

Каждого пузырь речь имеет соответствующее изображение двигающееся вокруг нижней части экрана (в другом месте в дереве слоев)

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

Я уже сделал все отслеживание & нарисовал линию с методами CGContextStrokePath, и теперь я застрял на том, как заменить линию треугольником.

Я посмотрел на рисунок треугольника в кварце и его заполнение. Меня беспокоит, что пузырьки речи перемещаются каждые 1/10 секунды, и похоже, что рисование только линии, используемой для доказательства концепции, имело довольно сильное воздействие на производительность/визуальную гладкость.

Одна из моих идей - это сделать тригонометрию самостоятельно, и растянуть & поверните изображение треугольника, чтобы соединить каждую из этих речевых пузырей с нижней точкой. Что-то говорит мне, что есть более эффективное/более элегантное решение, но я не вижу, чтобы он просматривал документацию. Любая помощь в отношении того, как вы относитесь к этой проблеме или которая подходит к ней, ценится. Благодарю.

+0

Вы также можете проверить - [CALayer setContents: (id) someCGImageRef] как более быстрая (но немного взломанная) вещь вместо UIImageView ... –

ответ

0

Если речевые пузыри фиксированы по размеру, просто используйте статический UIImage. Установите свойство layer.position изображения в точке треугольника. Затем вы можете использовать анимацию вида, чтобы перемещать пузыри вокруг.

Если вам нужны речевые пузыри для разных размеров, я бы создал изменяемое по размеру изображение, используя resizableImageWithCapInsets. Тогда я бы сделал то же самое, что и выше, чтобы разместить его.

Если бы что-то особенное в речевом пузыре, которое я мог бы достичь с помощью статического изображения или изменяемого размера изображения, я бы, вероятно, создал пользовательский слой или слои CA, чтобы получить желаемый эффект (например, градиент слой с слоем формы в качестве слоя маски)