gpt4 book ai didi

objective-c - 如何执行像 iPhoto 09 中那样的翻转和增长动画?

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:30 24 4
gpt4 key购买 nike

我正在开发一个 Cocoa 应用程序,我希望能够在我的 NSCollectionView 中的一个 View 中单击一个按钮,然后打开一个详细 View 并定位到屏幕中间,就像在 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];
...

是否有一个很好的例子来说明如何执行此操作或组合这些动画的一些规则?

最佳答案

代替

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

你想要

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

你会想要调整动画值,也许通过使用 CABasicAnimation

关于objective-c - 如何执行像 iPhoto 09 中那样的翻转和增长动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2845281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com