在我們的應用程序中,我們有一個自定義的警報通知,基本上是UITabBarItem
內的一個圓圈。我已通過獲取UITabBarItem
的視圖,然後在適當的位置創建CAShapeLayer
來添加它。不幸的是,無論我嘗試什麼,我都無法將形狀變成動畫。我嘗試過使用各種屬性,例如path和fillColor,但沒有成功。UITabBarItem內的iOS自定義動畫
這裏有一個代碼摘錄:
var lyrShape = CAShapeLayer()
lyrShape.fillColor = UIColor.red.cgColor
lyrShape.path = UIBezierPath(overIn: CGRect(x: 5, y: 5, width: 10, height: 10)).cgPath
vwTabBar.layer.addSublayer(lyrShape)
var aniShape = CABasicAnimation(keyPath: "fillColor")
aniShape.duration = 5
aniShape.toValue = UIColor.blue.cgColor
aniShape.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
aniShape.fillMode = kCAFillModeBoth
aniShape.autoreverses = true
aniShape.repeatCount = 20
lyrShape.add(aniShape, forKey: aniShape.keyPath)
我在常規視圖嘗試這個代碼,它的偉大工程,但是不管我怎麼努力,我不能讓它在UITabBarItem
工作。
更新:我已經想出了重現此錯誤的確切步驟。用一個按鈕啓動您的應用程序與一個普通的舊視圖控制器。在該按鈕上單擊,出現選項卡控制器視圖。您在TabBarItem中繪製的形狀在此時不會動畫。不過:如果TabBarController作爲第一個視圖啓動,動畫就會發生。
有沒有人有任何想法?
謝謝!
嗨!感謝您及時的回覆。但是:我看不出爲什麼你需要從UITabBarController繼承來完成這個任務。它有什麼變化?另外:我不想看圖像的動畫。相反,我正在爲添加的UITabBarItem內部的CAShapeLayer設置動畫。 你能解釋爲什麼繼承自UITabBarController的工作原理?爲什麼當你不這樣做? 謝謝! –
我猜是因爲我們無法迭代tabbar的子視圖,也無法直接訪問imageview屬性。通過子類化,您可以靈活地添加自定義的代碼和行爲。 –
其實你可以通過幾種不同的方式獲得UITabBarItem的視圖。他甚至在他的帖子中展示了一種非常冒險的方式來獲得UIImage。我迭代並測試某種類型的視圖,但是您肯定能夠以任何方式獲得視圖...再次感謝您回到我身邊。我很欣賞投入! –