2010-08-19 109 views
11

iPhone的Skype應用程序使用動畫TabBar圖標。例如,在登錄過程中,最右側的選項卡圖標顯示循環箭頭。呼叫「呼叫」選項卡圖標時,輕輕地閃爍,這顯然是通過動畫完成的。UITabBarItem圖標動畫

我想知道如何爲標籤欄項目的圖標設置動畫。

在我的特殊情況下,當用戶按下'Favorite'按鈕時,它會跳到'Favorites'標籤欄項上。我已經實現了跳躍動畫,但我希望相應的標籤欄圖標在動畫結束時閃爍以給它帶來完整感。

任何關於我應該看的方向的建議?

在此先感謝。

+0

你是如何實現跳躍動畫標籤分配每個UITabBarItem? – 2011-06-10 02:20:04

+0

我喜歡[RAMAnimatedTabBarController](https:// cocoapods。org/pods/RAMAnimatedTabBarController) – 2016-12-09 17:02:07

回答

11

我很驚訝的解決方案多麼容易!

Add方法將你的應用程序委託類的.m文件(或管理您的UITabBar任何其他類)包含以下程序:

  1. 創建將用於動畫的UIImageView的。
  2. 使用方法addSubview:將其添加到您的TabBar視圖。
  3. 將其縮小爲UITabBarItem的大小(使用UITabBar幀大小和標籤欄項目數來計算幀大小)。
  4. 調整imageView的frame.origin.x值以將圖像放置在要製作動畫的標籤項目上方。
  5. 將你想要的動畫添加到imageView中(你可以玩不透明,交換幾個圖像 - 任何你想要的)。

很容易,你不這麼認爲嗎?

您可以在任何需要爲選項卡欄項目設置動畫的UIApplicationDelegate實例上調用此方法。

還注意到,您可以點擊通過的ImageView選擇標籤欄項目好像有什麼在標籤欄沒有圖像是非常重要的。很多有趣的結論可以在這裏做了,如果你知道你可以做些什麼......

+0

這不適用於動態寬度的UITabBar。 – 2017-01-16 05:40:27

0

我還沒有這樣做,但我只是想嘗試構建一個CAAnimation,例如與CABasicAnimation並將其添加到您想要動畫的UITabBarItem。

有關如何建立一個CABasicAnimation看到核心動畫編程指南詳細信息: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/AnimatingLayers.html#//apple_ref/doc/uid/TP40006085-SW1

+0

Nah,我相信這不起作用,因爲UITabBarItem不是一種視圖 - 它來源於NSObjest(基本類)和UIBarItem(這裏也沒有什麼有趣的地方)。看起來好像沒有Layer或甚至可以玩的框架。 但我設法通過輸入'後門'來解決這個問題。 感謝您的想法,雖然 – 2010-08-24 00:27:25

0

您可以通過獲取其觀點,動畫的TabBar圖標,然後做任何想做動畫作爲你喜歡UIView。下面是一個簡單的範例轉換,歡呼!

func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem){ 
     var tabBarView: [UIView] = [] 

     for i in tabBar.subviews { 
      if i.isKind(of: NSClassFromString("UITabBarButton")!) { 
       tabBarView.append(i) 
      } 
     } 

     if !tabBarView.isEmpty { 
      UIView.animate(withDuration: 0.15, animations: { 
       tabBarView[item.tag].transform = CGAffineTransform(scaleX: 1.2, y: 1.2) 
      }, completion: { _ in 
       UIView.animate(withDuration: 0.15) { 
        tabBarView[item.tag].transform = CGAffineTransform.identity 
       } 
      }) 
     } 
    } 

PS:請以