Как выполнить анимацию сальто и роста, как в iPhoto 09? - PullRequest
3 голосов
/ 17 мая 2010

Я разрабатываю приложение Какао и хочу иметь возможность нажимать кнопку в одном из представлений в моем NSCollectionView, и у меня открывается развернутый вид сведений и положение в середине экрана, как в iPhoto 09, когда нажмите «я» в правом нижнем углу фотографии. Фотография «переворачивается» и увеличивается по центру окна, чтобы показать детали фотографии.

Я предполагаю, что они используют Core Animation для достижения этой цели. Я смотрел на пример Lemur Flip, но когда я пытаюсь изменить его, чтобы добавить код перемещения в анимацию, он сбрасывает сальто.

Вот код позиционирования, который я добавил к - (IBAction) flip: (id) отправитель; код LemurFlip:

...
[CATransaction begin]; {
NSSize supersize = contentView.frame.size; // Size of window content view
NSSize subsize = frontView.frame.size; // Size of view we're flipping out
if(!frontView.isHidden)
{
    // Move views to middle of the window
    [[backView animator] setFrameOrigin:NSMakePoint((supersize.width / 2) - (subsize.width / 2), (supersize.height / 2) - (subsize.height / 2))];
    [[frontView animator] setFrameOrigin:NSMakePoint((supersize.width / 2) - (subsize.width / 2), (supersize.height / 2) - (subsize.height / 2))];
}
else {
    // Return views to point of origin
    [[backView animator] setFrameOrigin:NSMakePoint(0, 0)];
    [[frontView animator] setFrameOrigin:NSMakePoint(0, 0)];
}
    [hiddenLayer addAnimation:[self _flipAnimationWithDuration:flipDuration isFront:NO] forKey:@"flipGroup"];
    [visibleLayer addAnimation:[self _flipAnimationWithDuration:flipDuration isFront:YES] forKey:@"flipGroup"];
} [CATransaction commit];
...

Есть ли хороший пример того, как сделать это или некоторые правила для комбинирования такого рода анимаций?

1 Ответ

1 голос
/ 25 мая 2010

вместо

[[backView animator] setFrameOrigin:];
[[frontView animator] setFrameOrigin:];

Вы хотите

[hiddenLayer setPosition:];
[visibleLayer setPosition:];

Вы захотите настроить значения анимации, возможно, с помощью CABasicAnimation

...