3

Cocoa アプリケーションを開発していて、NSCollectionView のビューの 1 つでボタンをクリックして、詳細ビューを開き、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];
...

これを行う方法や、これらの種類のアニメーションを組み合わせるためのルールの良い例はありますか?

4

1 に答える 1

1

それ以外の

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

あなたがしたい

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

おそらく CABasicAnimation を使用して、アニメーションの値を微調整する必要があります

于 2010-05-25T13:05:12.873 に答える