Навигация в стиле машины времени - PullRequest
4 голосов
/ 05 апреля 2011

В последнее время я занимался программированием для iPhone, и теперь я углубляюсь в домен iPad.Концепция, которую я хочу реализовать, основана на навигации, которая похожа на машину времени в OSX.Короче говоря, у меня есть ряд видов, которые можно панорамировать и масштабировать, как и любой обычный вид.Однако виды накладываются друг на друга, используя третье измерение (в данном случае глубина).пользователь будет переходить к любому представлению, в этом случае выбирая букву, после чего приложение будет пролистывать представления, пока не достигнет представления выбранной буквы.

Мой вопрос: может ли кто-нибудь датьполный окончательный код, как это сделать?Просто шучу.:) Что мне нужно, так это толчок в правильном направлении, так как я не уверен, как вообще начать это делать и возможно ли это вообще с использованием доступных фреймворков.Любые советы приветствуются

Спасибо!

Ответы [ 3 ]

4 голосов
/ 13 апреля 2011

Core Animation - или, точнее, модель анимации UIView, построенная на Core Animation - ваш друг.Вы можете создать интерфейс, похожий на Time Machine, с вашими представлениями, расположив их в вертикальной линии в пределах их родительского представления (используя их свойства center), при этом те, которые находятся дальше по этой линии, масштабируются немного меньше, чем те, что ниже (front ”) их (используя их свойства transform, с функцией CGAffineTransformMakeScale) и установив z-index их слоев (получите слой, используя свойство layer представления, затем установите его zPosition) так, чтобыте, что дальше по линии, появляются позади других.Вот пример кода.

// animate an array of views into a stack at an offset position (0 has the first view in the stack at the front; higher values move "into" the stack)
// took the shortcut here of not setting the views' layers' z-indices; this will work if the backmost views are added first, but otherwise you'll need to set the zPosition values before doing this
int offset = 0;
[UIView animateWithDuration:0.3 animations:^{
    CGFloat maxScale = 0.8; // frontmost visible view will be at 80% scale
    CGFloat minScale = 0.2; // farthest-back view will be at 40% scale
    CGFloat centerX = 160; // horizontal center
    CGFloat frontCenterY = 280; // vertical center of frontmost visible view
    CGFloat backCenterY = 80; // vertical center of farthest-back view
    for(int i = 0; i < [viewStack count]; i++)
    {
        float distance = (float)(i - offset) / [viewStack count];
        UIView *v = [viewStack objectAtIndex:i];
        v.transform = CGAffineTransformMakeScale(maxScale + (minScale - maxScale) * distance, maxScale + (minScale - maxScale) * distance);
        v.alpha = (i - offset > 0) ? (1 - distance) : 0; // views that have disappeared behind the screen get no opacity; views still visible fade as their distance increases
        v.center = CGPointMake(centerX, frontCenterY + (backCenterY - frontCenterY) * distance);
    }
}];

А вот как это выглядит с парой случайных цветов:

Sample screenshot of Time Machine-esque effect

0 голосов
/ 13 апреля 2011

Вы имеете в виду что-то вроде этого справа? enter image description here

Если да, это должно быть возможно. Вам нужно будет расположить виды как на изображении и анимировать их, двигаясь вперед и назад. Насколько я знаю, для этого нет рамок.

0 голосов
/ 05 апреля 2011

Он называется Cover Flow и также используется в iTunes для просмотра обложек / альбомов. Apple, похоже, купила технологию у третьей стороны, а также запатентовала ее. Однако, если вы воспользуетесь поиском прикрытия ios, вы получите множество совпадений и кода, которые укажут вам правильное направление.

Я не смотрел, но подумал бы, что это может быть в библиотеке iOS, но я точно не знаю.

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