CNLiveENTabBarController.m 5.97 KB
//
//  CNLiveENTabBarController.m
//  CNLiveScioLive
//
//  Created by CNLive-zxw on 2018/9/27.
//  Copyright © 2018年 CNLive. All rights reserved.
//

#import "CNLiveENTabBarController.h"
#import "XWTabBarModel.h"

@interface CNLiveENTabBarController ()<UITabBarDelegate>{
    NSInteger _indexFlag;
}
@property (nonatomic, copy) NSMutableArray *controllers;

@end

@implementation CNLiveENTabBarController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    _indexFlag = 0;

    [self initItemsAndViewContorllers];
    self.tabBar.tintColor = Color_Blue;
    
    
//    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeLanguageVersion:) name:@"changeLanguageVersion" object:nil];
    
}
//- (void)changeLanguageVersion:(NSNotification *)notification {
//    for (NSInteger i = 0; i < self.controllers.count; i++) {
//        XWTabBarModel *model = self.controllers[i];
//        UIViewController *childVC = self.viewControllers[i];
//        childVC.tabBarItem.title = IS_CHINESE ? model.title : model.enTitle;
//
//    }
//
//}
- (void)initItemsAndViewContorllers {
    
    NSMutableArray *viewControllerArr = [NSMutableArray array];
    
    for (XWTabBarModel *model in self.controllers) {
        UIViewController *childVC = [NSClassFromString(model.controller) new];
        childVC.tabBarItem.title = IS_CHINESE? model.title : model.enTitle;
        
        [childVC.tabBarItem setTitleTextAttributes:@{
                                                     NSFontAttributeName : [UIFont systemFontOfSize:10.0],
                                                     NSForegroundColorAttributeName : HEXCOLOR(0x555555)}
                                          forState:UIControlStateNormal];
        
        [childVC.tabBarItem setTitleTextAttributes:@{
                                                     NSFontAttributeName : [UIFont systemFontOfSize:10.0],
                                                     NSForegroundColorAttributeName : Color_Blue}
                                          forState:UIControlStateSelected];
        
        if ([model.image isEqualToString:model.selectedImage]) {
            CGSize imageSize = CGSizeMake(54, 54);
            UIImage *norMal = [UIImage imageNamed:model.image];
            UIImage *image = [self scaleToSize:norMal size:imageSize];
            childVC.tabBarItem.image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
            childVC.tabBarItem.selectedImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
            childVC.tabBarItem.imageInsets = UIEdgeInsetsMake(-15, 0, 15, 0);
            
        }else{
            childVC.tabBarItem.image = [[UIImage imageNamed:model.image] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
            childVC.tabBarItem.selectedImage = [[UIImage imageNamed:model.selectedImage] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
            
        }
        
        CNLiveBaseNavigationController *naviVC = [[CNLiveBaseNavigationController alloc] initWithRootViewController:childVC];
        [viewControllerArr addObject:naviVC];
    }
    self.viewControllers = viewControllerArr;
}
#pragma mark --懒加载
- (NSMutableArray *)controllers {
    if (!_controllers) {
        _controllers = [NSMutableArray array];
        
        NSString *path = [[NSBundle mainBundle] pathForResource:@"MainTabbarItemEN" ofType:@"plist"];
        NSArray *modelArr = [NSArray arrayWithContentsOfFile:path];
        
        for (NSInteger i = 0; i < modelArr.count; i++) {
            XWTabBarModel *homeModel = [XWTabBarModel mj_objectWithKeyValues:modelArr[i]];
            [_controllers addObject:homeModel];
        }
    }
    return _controllers;
    
}

- (void)dealloc {
//    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"changeLanguageVersion" object:nil];
}

/**
 *  改变图片的大小
 *
 *  @param img     需要改变的图片
 *  @param newsize 新图片的大小
 *
 *  @return 返回修改后的新图片
 */
- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)newsize{
    // 创建一个bitmap的context
    // 并把它设置成为当前正在使用的context
    UIGraphicsBeginImageContext(newsize);
    // 绘制改变大小的图片
    [img drawInRect:CGRectMake(0, 0, newsize.width, newsize.height)];
    // 从当前context中创建一个改变大小后的图片
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    // 使当前的context出堆栈
    UIGraphicsEndImageContext();
    // 返回新的改变大小后的图片
    return scaledImage;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (BOOL)shouldAutorotate{
    return self.selectedViewController.shouldAutorotate;

}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return [self.selectedViewController supportedInterfaceOrientations];

}
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
    NSInteger index = [self.tabBar.items indexOfObject:item];
    if (_indexFlag != index) {
        [self animationWithIndex:index];
    }
}
// 动画
- (void)animationWithIndex:(NSInteger) index {
    NSMutableArray * tabbarbuttonArray = [NSMutableArray array];
    for (UIView *tabBarButton in self.tabBar.subviews) {
        if ([tabBarButton isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
            [tabbarbuttonArray addObject:tabBarButton];
        }
    }
    CABasicAnimation*pulse = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    pulse.timingFunction= [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    pulse.duration = 0.15;
    pulse.repeatCount= 1;
    pulse.autoreverses= YES;
    pulse.fromValue= [NSNumber numberWithFloat:0.7];
    pulse.toValue= [NSNumber numberWithFloat:1.3];
    UIView *tabBarButton = tabbarbuttonArray[index];
    [[tabBarButton layer] addAnimation:pulse forKey:nil];
    _indexFlag = index;
    
}
@end