Как выполнить анимацию поворота и увеличения, как в iPhoto 09?

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

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

Вот код позиционирования, который я добавил к - (IBAction) flip: (id) sender; код 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];
...

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


person Austin    schedule 16.05.2010    source источник
comment
Вы знаете, можно ли это сделать в iOS?   -  person Felipe Cypriano    schedule 15.06.2011


Ответы (1)


Вместо

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

Вы хотите

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

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

person hooleyhoop    schedule 25.05.2010