2010-05-16 78 views
3

我正在開發一個Cocoa應用程序,並希望能夠點擊我的NSCollectionView中的某個視圖中的按鈕,並且可以在iPhoto 09中點擊某個細節視圖並翻轉打開並定位到屏幕中間照片右下角的「我」。照片「翻轉」並增長,以窗口爲中心顯示有關照片的詳細信息。如何在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]; 
... 

有如何做到這一點還是有些規則結合這些類型的動畫的一個很好的例子?

+0

你知不知道這是否可能在iOS的做? – 2011-06-14 21:57:27

回答

1

而不是

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

你想

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

你會想,也許通過使用CABasicAnimation來調整動畫值,

+0

謝謝,這樣做! – Austin 2010-05-26 17:56:07