關(guān)于UITabBarController(選項卡)點擊動畫

關(guān)于tabar

UITabBarController管理一個按鈕欄和轉(zhuǎn)換視圖,用于具有多個頂級模式的應(yīng)用程序。
若要在應(yīng)用程序中使用,請將其視圖添加到視圖層次結(jié)構(gòu)中,然后按順序添加頂級視圖控制器。
大多數(shù)客戶不需要子類化UITabBarController。
如果將超過5個視圖控制器添加到選項卡控制器中,只有前四個視圖控制器將顯示。
其余部分將在自動生成的更多項目下訪問。
如果所有的視圖控制器都是可旋轉(zhuǎn)的,UITabBarController是可旋轉(zhuǎn)的。
是不是很官方,直接拿的官方翻譯,??。

tabar點擊動畫原理

原理也很簡單,就是在UITabBarControllerDelegate代理方法中,找到- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item方法。在里面給每個BarButton加上動畫??梢杂没緞赢?,也可以寫復(fù)雜點的動畫。比如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;
    }
}

這里只是貼出部分核心代碼,只是做了一個放大動畫的效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容