一款灵动的动画标签栏类库:Ramotion/animated-tab-bar
jopen
10年前
一款灵动的动画标签栏类库。可在storyboard中直接使用,非常方便。Demo效果非常漂亮。递交仅一周时间,今天即在GitHub上以122颗星极速跃居到Swift分类第一的位置。
要求
- iOS 7.0+
- Xcode 6.1
安装
Just add the RAMAnimatedTabBarController folder to your project.
用法
-
Create a new UITabBarController in your storyboard or nib.
-
Set the class of the UITabBarController to RAMAnimatedTabBarController in your Storyboard or nib.
-
For each UITabBarItem, set the class to RAMAnimatedTabBarItem.
-
Add a custom image icon for each RAMAnimatedTabBarItem
-
Add animation for each RAMAnimatedTabBarItem :
- drag and drop an NSObject item into your ViewController
- set its class to ANIMATION_CLASS (where ANIMATION_CLASS is the class name of the animation you want to use)
- connect the outlet animation in RAMAnimatedTabBarItem to your ANIMATION_CLASSDemonstration video for step 5
包含的动画
- RAMBounceAnimation
- RAMLeftRotationAnimation
- RAMRightRotationAnimation
- RAMFlipLeftTransitionItemAniamtions
- RAMFlipRightTransitionItemAniamtions
- RAMFlipTopTransitionItemAniamtions
- RAMFlipBottomTransitionItemAniamtions
- RAMFrameItemAnimation
创建自定义动画
-
Create a new class which inherits from RAMItemAnimation:
class NewAnimation : RAMItemAnimation
-
Implement the methods in RAMItemAnimationProtocol:
// method call when Tab Bar Item is selected override func playAnimation(icon : UIImageView, textLable : UILabel) { // add animation } // method call when Tab Bar Item is deselected override func deselectAnimation(icon : UIImageView, textLable : UILabel, defaultTextColor : UIColor) { // add animation } // method call when TabBarController did load override func selectedState(icon : UIImageView, textLable : UILabel) { // set selected state }
-
Example:
class RAMBounceAnimation : RAMItemAnimation { override func playAnimation(icon : UIImageView, textLable : UILabel) { playBounceAnimation(icon) textLable.textColor = textSelectedColor } override func deselectAnimation(icon : UIImageView, textLable : UILabel, defaultTextColor : UIColor) { textLable.textColor = defaultTextColor } override func selectedState(icon : UIImageView, textLable : UILabel) { textLable.textColor = textSelectedColor } func playBounceAnimation(icon : UIImageView) { let bounceAnimation = CAKeyframeAnimation(keyPath: "transform.scale") bounceAnimation.values = [1.0 ,1.4, 0.9, 1.15, 0.95, 1.02, 1.0] bounceAnimation.duration = NSTimeInterval(duration) bounceAnimation.calculationMode = kCAAnimationCubic icon.layer.addAnimation(bounceAnimation, forKey: "bounceAnimation") } }