Swift中設定自定義tabBar按鈕的動畫效果
阿新 • • 發佈:2019-01-30
將此段程式碼放到自定義的UITabBarController指令碼中即可
//---------------------------------------------------- // 當點選tabBar的時候,自動執行該代理方法(不需要手動設定代理) override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { // 使用列舉遍歷,判斷選中的tabBarItem等於陣列中的第幾個 for (k,v) in (tabBar.items?.enumerated())! { if v == item { // 列印選中的iteme下標 print(k) // 將下標傳入動畫方法 animationWithIndex(index: k) } } } //---------------------------------------------------- // 動畫方法 func animationWithIndex(index:Int){ // 不知為何,無法設定陣列型別為UITabBarButton??????所以設定成了Any var tabbarbuttonArray:[Any] = [Any]() for tabBarBtn in self.tabBar.subviews { if tabBarBtn.isKind(of: NSClassFromString("UITabBarButton")!) { tabbarbuttonArray.append(tabBarBtn) } } //---------------------------------------------------- let pulse = CABasicAnimation(keyPath: "transform.scale") pulse.timingFunction = CAMediaTimingFunction(name:kCAMediaTimingFunctionEaseInEaseOut) pulse.duration = 0.08 pulse.repeatCount = 1 pulse.autoreverses = true pulse.fromValue = 0.7 pulse.toValue = 1.3 // 給tabBarButton新增動畫效果 let tabBarLayer = (tabbarbuttonArray[index] as AnyObject).layer tabBarLayer?.add(pulse, forKey: nil) } //----------------------------------------------------