UITabBar导航按钮图片抖动动画的实现

导航按钮抖动动画就是上面的箭头所指的按钮transform大小变化的动画:

实现方案是,在UITabBarController添加子控制器时,都对子控制器的vc.tabBarItem.tag标记下,通过逐级遍历tabBar的子控件,当获得UITabBarSwappableImageView子控件时,就可以对此类的实例对象做动画处理即可,参照代码如下1 2 3步骤:

           1

  •  [self addChildViewController:[self loadViewControllerWithString:@"MYHomeController" andTitle:@"首页"andImageStr:@"tabbar_home" andImageSel:@"tabbar_home_highlighted" andIndex:0]];
  • ......................
  •  [self addChildViewController:[self loadViewControllerWithString:@"MYProfileController" andTitle:@"我" andImageStr:@"tabbar_profile" andImageSel:@"tabbar_profile_highlighted" andIndex:3]];

 

  • 2
  • - (UINavigationController *)loadViewControllerWithString:(NSString *)string andTitle:(NSString *)title andImageStr:(NSString *)imgStr andImageSel:(NSString *)imageSelStr andIndex:(NSInteger) index{
  •     Class MYClass = NSClassFromString(string);
  •     UIViewController *vc = [[MYClass alloc] init];
  •     vc.title = title;
  •     vc.tabBarItem.image = [UIImage imageNamed:imgStr];
  •     vc.tabBarItem.tag = index;
  •     if ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0) {
  •         vc.tabBarItem.selectedImage = [[UIImage imageNamed:imageSelStr] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
  •     }
  •     return [[MYBaseNavController alloc] initWithRootViewController:vc];
  • }

 

         3 

  • //tabBar的方法
  • - (void)tabBar:(nonnull UITabBar *)tabBar didSelectItem:(nonnull UITabBarItem *)item{
  •     NSInteger index = 0;
  •     for (UIView * subView in tabBar.subviews) {
  •         //判断是否是UITabBarButton
  •         if ([subView isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
  •             
  •             if (item.tag == index) {
  •                 for (UIView *v in subView.subviews) {
  •                     if ([v isKindOfClass:NSClassFromString(@"UITabBarSwappableImageView")]) {
  •                         v.transform = CGAffineTransformMakeScale(0.6, 0.6);
  •                         [UIView animateWithDuration:0.2 delay:0 usingSpringWithDamping:0.1 initialSpringVelocity:1 options: 0 animations:^{
  •                             v.transform = CGAffineTransformIdentity;
  •                         } completion:nil];
  •                     }
  •                 }
  •             }
  •             index++;
  •         }
  •     }
  • }

 

转载于:https://my.oschina.net/llfk/blog/740968

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值