2017-07-14 9 views
1

私たちのアプリでは、基本的にUITabBarItemの中にあるカスタムアラート通知があります。私はUITabBarItemの視野を得て、適切な位置にCAShapeLayerを作成して追加しました。残念ながら、私が何を試しても、形をアニメーション化することはできません。私は、パスやfillColorなどのさまざまなプロパティをアニメーション化してみましたが、成功しませんでした。私はそれがUITabBarItemで働いて得ることができないしてみてください何が関係なく、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) 

私は定期的な意見でこのコードを試してみた、それは素晴らしい作品:

は、ここでのコードの抜粋ません。

更新:このバグを再現するための正確な手順を見つけました。プレーンな古いView Controllerでボタンを使ってアプリケーションを起動します。そのボタンをクリックして、タブコントローラービューを表示します。 TabBarItemで描画する図形は、この時点ではアニメーション化されません。ただし、TabBarControllerが最初のビューとして開始された場合、アニメーションはうまくいきます。

誰にもアイデアはありますか?

ありがとう!

答えて

0

まず、あなたは良い質問をしました。私も似たようなものを探していて、私は答えました。あなたはUITabBarControllerのカスタムクラスを作成する必要があり、その後、あなたは以下のように何かを行うことができます:

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 
    if item.tag == 1{ 
    //do our animations 
     self.secondItemImageView.transform = CGAffineTransformIdentity 
     UIView.animateWithDuration(0.7, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 1, options: .CurveEaseInOut, animations: {() -> Void in 
      let rotation = CGAffineTransformMakeRotation(CGFloat(M_PI_2)) 
      self.secondItemImageView.transform = rotation 
     }, completion: nil) 
    } 
} 

私が得たこの答えは、私が最近読んでいたブログの記事を形成します。これをさらに明確にするために、私はこのブログを参照するためにあなたをお勧めします: https://medium.com/@werry_paxman/bring-your-uitabbar-to-life-animating-uitabbaritem-images-with-swift-and-coregraphics-d3be75eb8d4d

私は、これはあなたを助けることを願っています:)

+0

こんにちは!早速のご返事ありがとうございます。しかし、これを達成するためにUITabBarControllerから継承する必要がある理由はありません。それは何が変わるのですか?また、私はイメージをアニメートするつもりはない。むしろ私が追加したUITabBarItemの中にCAShapeLayerをアニメーション化しようとしています。 UITabBarControllerを継承する理由について説明できますか?そして、なぜあなたはそれをしないのですか? ありがとう! –

+0

私は、タブバーのサブビューを反復できないし、直接imageviewプロパティにアクセスすることもできないと思います。サブクラス化により、カスタマイズしたコードと動作を柔軟に追加できます。 –

+0

実際には、いくつかの方法でUITabBarItemのビューを見ることができます。彼はUIImageを取得するために彼のポストで本当にハックな方法を示しています。私は反復し、特定のタイプのビューをテストしますが、あなたは確かにいずれかの方法でビューに取得することができます...私に戻ってくれて再度ありがとう。私は入力を感謝します! –

0

私はバグレポートを提出した後、だから私は最終的に戻って、アップルから聞きました。彼らは、私がやっていることはサポートされていない、彼らはそれを修正するつもりはなかったと私に言った。正確には私が探していた答えではありませんでしたが、少なくともそれは答えでした。

これは他にもこれに踏み込んだ他の人に役立つことを願っています。

James

関連する問題