2013-01-12 107 views
8

我正在做一個導航控制器類的Mac OS XCATransition推不褪色

我想更換一個kCATransitionPush動畫當前視圖。
像這個帖子:
Core Animation Tutorial - Wizard Dialog With Transitions

CATransition設置是這樣的:

CATransition *transition = [CATransition animation]; 
transition.type = kCATransitionPush; 
transition.subtype = kCATransitionFromLeft; 
[self.view setAnimations:@{ @"subviews" : transition }]; 

然而,當我更換意見,有一個動畫漸變,這是自動被添加。

[NSAnimationContext beginGrouping]; 
{ 
    [[self.view animator] replaceSubview:_currentViewController.view with:newViewController.view]; 
} 
[NSAnimationContext endGrouping]; 

我怎樣才能做到不褪色推動畫?

回答

5

我發現獲得平穩的核心動畫過渡的作品的看法是否支持CA無論與否的最好方法是做到以下幾點:

  1. 創建您正試圖將視圖的圖像動畫,使用NSView -cacheDisplayInRect:toBitmapImageRep或類似的方法
  2. 將在該圖像中的NSImageView
  3. 層背面的圖像視圖,這將繪製細而不當層的支持
  4. 添加圖像視圖作爲一個子視圖超過毛刺您嘗試一旦動畫完成
1

我懷疑你正在運行隱式動畫 - 核心動畫會自動爲在你自己的事務之外發生的圖層屬性更改設置動畫。

有幾種方法在這兩個問題禁用這些隱式動畫一個很好的總結:

How to disable CALayer implicit animations?

Disabling implicit animations in -[CALayer setNeedsDisplayInRect:]

...你可以閱讀更多關於隱性交易in the Core Animation docs

+1

我真的不知道,如果我得到你的意思過渡

  • 使用的NSView的動畫代理
  • 動畫圖像視圖幀刪除圖像視圖的視圖。我嘗試了'CATransition * transition = [CATransition動畫]; [transition setValue:(id)kCFBooleanFalse forKey:kCATransitionFade];'但它沒有工作,沒有錯誤信息,只是相同的行爲。 – NSAddict

  • 1

    我認爲從左轉換過渡包括一個內置的淡入淡出。 IOS push轉換。

    如果你不想這樣做,你可能不得不使用Core Animation推出自己的推送過渡。在iOS中使用UIView動畫很容易。可悲的是,在Mac OS中沒有相同的功能。我希望Apple會回去並在Mac OS上添加視圖動畫。我在iOS中使用它們被寵壞了,然後在我使用Mac應用程序時錯過了它們。