Более богатые интерфейсы iPhone с компонентами библиотеки? - PullRequest
0 голосов
/ 13 июля 2010

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

Как далеко растягивается базовый интерфейс iPhone? Создают ли большинство людей свои собственные интерфейсы и код, и если да, то какая база там? CoreGraphics? OpenGL?

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

1 Ответ

0 голосов
/ 13 июля 2010

Существует несколько уровней интерфейсов на основе какао.Как правило, я рекомендую работать на самом высоком уровне абстракции, который соответствует вашим потребностям в представлении и производительности.

Базовые элементы UIKit, которые вы можете разместить с помощью Interface Builder или кода, предназначены для обработки наиболее распространенных случаев в приложении.интерфейс.Они обеспечивают некоторую степень настройки, в зависимости от их типа, но то, что вы видите, это, как правило, все, что вы получаете.На iPhone Apple даже пытается сохранить определенный внешний вид этих базовых элементов, отвергая приложения во время проверки, которые используют их способами, противоречащими Руководству по интерфейсу пользователя.

Следующим уровнем ниже являются пользовательские UIViews.Их можно сделать похожими на что угодно с помощью рисования кварца в методе -drawRect:.Вы можете выполнять свою собственную обработку касаний, переопределяя методы, такие как –touchesBegan:withEvent:, или используя новые UIGestureRecognizer.Учитывая уровень настройки, который вы можете сделать здесь, большинство людей останавливаются, когда настраивают свои интерфейсы.

Вы можете пойти немного ниже этого, работая со слоями и анимациями Core Animation.Вы не сильно выигрываете в производительности, используя CALayers вместо UIViews на iPhone, но они могут быть полезны, если вы хотите создавать визуальные элементы, использующие один и тот же код на Mac и iPhone.Пользовательские анимации могут потребоваться, если вы хотите сделать что-то большее, чем анимировать представление между двумя состояниями линейно.Вы даже можете выполнять некоторые ограниченные трехмерные работы с помощью Core Animation.

Наконец, есть OpenGL ES для отображения полных трехмерных сцен и для действительно высокопроизводительного графического отображения.Это примерно так же близко к металлу, как вы получите при работе с системой отображения iPhone, и показывает количество и сложность кода, который вы должны написать.Для сложной 3-D работы это то, что вам нужно будет использовать, но для 2-D и даже элементарной 3-D я рекомендую сначала взглянуть на Core Animation из-за кода, который может вас спасти.Если производительность неприемлема, тогда вы должны перейти к OpenGL ES.

Теперь, просто потому, что вам нужно использовать одну из этих технологий для работы с частью вашего интерфейса, не означает, что она не может сосуществовать с другими,UIViews поддерживаются слоями Core Animation, и даже OpenGL ES выполняет рендеринг в CALayer, который может быть размещен в виде.Опять же, используйте самый высокий уровень абстракции, который подходит для этой части вашего интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...