關于tabar
UITabBarController管理一個按鈕欄和轉(zhuǎn)換視圖决侈,用于具有多個頂級模式的應用程序喧务。
若要在應用程序中使用,請將其視圖添加到視圖層次結(jié)構中,然后按順序添加頂級視圖控制器讯蒲。
大多數(shù)客戶不需要子類化UITabBarController。
如果將超過5個視圖控制器添加到選項卡控制器中赁酝,只有前四個視圖控制器將顯示。
其余部分將在自動生成的更多項目下訪問衡载。
如果所有的視圖控制器都是可旋轉(zhuǎn)的隙袁,UITabBarController是可旋轉(zhuǎn)的。
是不是很官方菩收,直接拿的官方翻譯,??坡贺。
tabar點擊動畫原理
原理也很簡單箱舞,就是在UITabBarControllerDelegate代理方法中,找到- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item方法晴股。在里面給每個BarButton加上動畫」悖可以用基本動畫胡桨,也可以寫復雜點的動畫。比如Lottie動畫刽虹。雖然我沒有嘗試過呢诬,但我感覺京東的tabar動畫點擊就是用lottie寫的。
具體實現(xiàn)
@interface TabBarViewController ()<UITabBarControllerDelegate >//遵循UITabBarControllerDelegate代理
@property (nonatomic, assign)NSInteger indexFlag;//記錄點擊第幾個BarButton
- (void)viewDidLoad {
self.indexFlag = 0;
}
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
NSInteger index = [self.tabBar.items indexOfObject:item];
if (index != self.indexFlag) {
NSMutableArray *arry = [NSMutableArray array];
for (UIView *btn in self.tabBar.subviews) {
if ([btn isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
[arry addObject:btn];
}
}
//添加基本動畫
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.duration = 0.2;
animation.repeatCount = 1;
animation.autoreverses = YES;
animation.fromValue = [NSNumber numberWithFloat:1];
animation.toValue = [NSNumber numberWithFloat:1.2];
[[arry[index] layer] addAnimation:animation forKey:nil];
self.indexFlag = index;
}
}
這里只是貼出部分核心代碼阀圾,只是做了一個放大動畫的效果狗唉。