Быстрое рисование в большом размере - PullRequest
1 голос
/ 25 февраля 2009

Я занимаюсь разработкой приложения для фортепиано для iPhone. Я хотел бы разработать клавиатуру с плавной прокруткой (например, Music Sampler).

Я поместил пользовательское представление (1440px x 120px) в UIScrollView. Я хотел использовать OpenGL, потому что Quartz слишком медленный. Но я не смог открыть OpenGL в 1440px.

Любая идея, чтобы сделать более быстрый и крупный пользовательский вид?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2009

Любой экземпляр UIView имеет максимальный размер 1024x1024. Не имеет значения, является ли это OpenGL или нет. Вы можете иметь прокручиваемую область больше этой, но вам придется создать ее из нескольких плиточных видов.

0 голосов
/ 25 февраля 2009

Использование OpenGL для этого было бы излишним и плохая идея. Вы потратите много времени на настройку вещей, которые уже предоставлены вам в UIViews, таких как сенсорная обработка.

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

Альтернативный способ - настроить каждую из ваших клавиш как отдельные UIViews, расположить их в большем суперпредставлении, и каждый из них должен обработать свои сенсорные события. Это то, что я делаю в интерфейсе , показанном здесь . Нижнее меню состоит из двух подменю, и внутри подменю каждая из кнопок меню является отдельным UIViews. Их содержимое (граница, глянец и текст) отображается через Quartz, но это происходит только один раз. Поскольку эти представления имеют слоистую основу, они кэшируют нарисованный контент, анимируют и прокручивают их очень плавно. События касания запускают действие каждого пункта меню. Обратите внимание, что верхняя половина меню содержится в UIScrollView, так что вы можете прокрутить дополнительные параметры.

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

...