Как выполнить анимацию сальто и роста, как в iPhoto 09?
Я занимаюсь разработкой приложения Cocoa и хочу иметь возможность нажимать кнопку в одном из представлений в моем NSCollectionView и открывать представление подробностей и располагать его в середине экрана, как в iPhoto 09, когда вы нажимаете " я "в правом нижнем углу фотографии. Фотография "переворачивается" и растет, центрируясь на окне, чтобы раскрыть детали фотографии.
Я предполагаю, что они используют 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];
...
Есть хороший пример того, как сделать это или некоторые правила для комбинирования такого рода анимаций?
1 ответ
Вместо
[[backView animator] setFrameOrigin:];
[[frontView animator] setFrameOrigin:];
Ты хочешь
[hiddenLayer setPosition:];
[visibleLayer setPosition:];
Вы можете настроить значения анимации, возможно, с помощью CABasicAnimation