美文网首页
iOS之tabBarItem选中变为“刷新”及再次点击刷新页面

iOS之tabBarItem选中变为“刷新”及再次点击刷新页面

作者: zwing | 来源:发表于2019-09-26 13:17 被阅读0次
    • 开发过程中,有仿同花顺首页tabBarItem选中变为“刷新”及再次点击刷新页面的需求
      <这里是最简单的实现方式>

    在自定义的UITabBarController的.m文件中实现以下代理方法即可:

    - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
        if (viewController.tabBarController.selectedIndex == 3) {
            tabBarController.viewControllers[3].tabBarItem.title = @"刷新";
        } else {
            tabBarController.viewControllers[3].tabBarItem.title = @"资讯";
        }
    }
    
    - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
        // 判断哪个界面要需要再次点击刷新
        if ([tabBarController.selectedViewController isEqual:tabBarController.viewControllers[3]]) {
            // 判断再次选中的是否为当前的控制器
            if ([viewController isEqual:tabBarController.selectedViewController]) {
                // 执行操作
                [[NSNotificationCenter defaultCenter] postNotificationName:@"k_gg_tab_item_clicked_refresh" object:nil];
                
                // 如需要在再次点击的时候,改变icon并做动画,动画结束复原,则需加上一下代码👇:
                viewController.tabBarItem.selectedImage = [UIImage imageNamed:@"tab_刷新选中"];
    
                UIControl *tabBarButton = [viewController.tabBarItem valueForKey:@"view"];
                UIImageView *tabBarSwappableImageView = [tabBarButton valueForKey:@"info"];
                
                CABasicAnimation * rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; //让其在z轴旋转
                rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 ];//旋转角度
                rotationAnimation.duration = 0.5; //旋转周期
                rotationAnimation.cumulative = YES;//旋转累加角度
                rotationAnimation.repeatCount = 1;//旋转次数
                [tabBarSwappableImageView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
                
                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                    viewController.tabBarItem.selectedImage = [UIImage imageNamed:@"tab_资讯选中"];
                });
                
                return NO;
            }
        }
        return YES;
    }
    

    相关文章

      网友评论

          本文标题:iOS之tabBarItem选中变为“刷新”及再次点击刷新页面

          本文链接:https://www.haomeiwen.com/subject/dqxbyctx.html