1

Я пытаюсь выяснить, как лучше всего выполнить рисование сцены в приложении iphone. Вот ситуация:Рисование нескольких преобразованных изображений с использованием Quartz на iPhone

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

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

Некоторые возможные решения я могу думать:

  • использования кварца: Нарисовать фон для cgcontext вида. Создайте несколько CGLayers и нарисуйте текст/изображения. Преобразуйте CGlayers (можете ли вы это сделать?), Затем нарисуйте слои в основной CGContext.

  • использование OpenGL: пожалуйста нет. если мне это действительно нужно.

Идеи?

Спасибо.

ответ

1

В основном согласен с Марко. CA идеально подходит для этой работы. Настройте представление и добавьте кучу слоев.

Несколько пунктов, хотя.

Вы можете напрямую нарисовать текст, используя методы категории NIString UIStringDrawing. работает очень хорошо и не имеет накладных расходов на UILabel.

Рисунок с CoreGraphics не слишком медленный, потому что CoreAnimation интеллектуально кэширует слой. То есть, он нарисован только один раз, а затем CA оживляет копию, если на слой не отправлено сообщение setNeedsDisplay.

+0

Так что, пока перед анимацией я должен использовать CGLayers? Также - в чем разница между CoreGraphics и CoreAnimation? Они оба являются частью кварца? У меня возникли проблемы с различением разных имен .... У кого-нибудь есть хорошие ресурсы для CoreAnimation/CALayers/CGLayers? – aloo

+0

CGLayers являются частью Core Graphics. CALayers являются частью Core Animation. Ни одна из них не является частью другой, но можно предположить, что Core Animation использует Core Graphics под капотом.Разница заключается в том, что Core Animation спроектирована так, чтобы вам было легко оживлять вещи, тогда как Core Graphics предназначена только для рисования графики. –

+0

Огромное спасибо. Получил эту работу. – aloo

1

Использование CoreAnimation CALayers для imags (вы можете применить к ним трансформирование) и UILabels для текста. Рисование с помощью CoreGraphics будет слишком медленным для анимации.

Смежные вопросы