Док OS X в приложении для Iphone? - PullRequest
0 голосов
/ 20 мая 2009

Я думал, что отличным дополнением к приложению для iphone будет возможность встроить OS X Dock в iphone. Моя идея состоит в том, чтобы в моем приложении было примерно 5 обычных меню, и когда вы проводите пальцем по меню, отдельные значки будут увеличиваться, а при выборе параметра значок будет подпрыгивать, пока вы ждете.

Лично мне бы понравилось это в моих приложениях, но мне интересно, можно ли это сделать. Будет ли это слишком интенсивным процессором? Любая идея, если это может быть сделано в Core Graphics или вам нужно OpenGL ES?

Спасибо всем, кто откликнулся.

Ответы [ 4 ]

3 голосов
/ 20 мая 2009

5 - это точное количество значков, которые идеально вписываются в UITabBarController, предоставляя простой способ переключения между представлениями, который соответствует руководству Apple iPhone по человеческому интерфейсу и будет очень знаком пользователям iPhone.

Вот видео, показывающее, как создать приложение с помощью UITabBarController:

http://www.screentoaster.com/watch/stVUpUQEVLQVteRl1eXFxf/iphonedev_101_uitabbarcontroller

Если вы все еще чувствуете, что вам действительно нужно иметь что-то похожее на OS X Dock, я бы порекомендовал использовать Core Animation.

Создайте пользовательское представление и в коде инициализации добавьте CALayer для каждого значка дока. Реализуйте событие touchesMoved, чтобы определить положение пальца, и измените границы и свойства положения для слоев значков, чтобы переместить / изменить их размер. Вам придется настроить свой алгоритм для настройки размеров значков и режима анимации, который вы используете, чтобы попытаться согласовать поведение в OS X, но я считаю, что это просто линейное искажение, основанное на расстоянии от курсора (или пальца в этом случае ).

Реализуйте код для сброса значков в их положение по умолчанию и запустите любое действие, которое вы хотите для своих значков, в штрихах. Округлено.

Чтобы отослать значки, вы можете попробовать анимировать положение с помощью CABasicAnimation с функцией хронирования kCAMediaTimingFunctionEaseInEaseOut, а также с повторением и автореверсом.

1 голос
/ 20 мая 2009

Базовая структура анимации должна хорошо работать для обсуждаемых вами видов анимации (отскок, масштабирование). Я думаю, что это будет намного проще, чем OpenGL.

Вот фрагмент кода, который должен анимировать перемещение значка к координате y 148 в течение 0,2 секунды:

[UIView beginAnimations: @"iconBounce" context: NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(iconBounceAnimationDidStop:finished:context:)];

CGRect iconPosition = iconImageView.frame;
iconPosition.origin.y = 148; //bounce up
iconImageView.frame = iconPosition;

[UIView setAnimationDuration: 0.2];
[UIView commitAnimations];

Селектор iconBounceAnimationDidStop:finished:context: представляет метод, который будет вызван после завершения анимации. Вы можете написать этот метод так, чтобы он переместил значок обратно в исходное положение, чтобы завершить отскок.

0 голосов
/ 20 мая 2009

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

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

0 голосов
/ 20 мая 2009

Я бы, вероятно, использовал OpenGL для такого рода графической обработки. Отображение / масштабирование текстур очень эффективно выполняется в OpenGL.

Тем не менее, проблема с вашей идеей в том, что это будет "приложение для открытия других приложений".

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