美文网首页专注iOS开发
iOS项目中三级控制器搭建(UITabBarController

iOS项目中三级控制器搭建(UITabBarController

作者: 爱上火烧的小毛驴 | 来源:发表于2016-07-13 15:00 被阅读109次

    在项目一开始搭建TabBarControler和NavigationController的时候,很多人习惯自定义TabBar。
    其实系统的自带的设置TabBarControler、对应的子控制器、对应的Tabbar上的image和title更简单,但有些人出现了图片莫名变得很大或Tabbar上的title跟控制器的Title冲突的问题,下面的解决办法仅作参考,如有问题,请私信我。

    #import "MainTabBarController.h"
    #import "BaseNavigationController.h"
    #import "HomeViewController.h"
    #import "FindViewController.h"
    #import "AccountViewController.h"
    
    @interface MainTabBarController ()<UITabBarDelegate>
    @end
    @implementation MainTabBarController
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        [[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10]} forState:UIControlStateNormal];
        UIColor *titleHighlightedColor = [UIColor colorWithHexString:MainBlueColor];
        [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           titleHighlightedColor, NSForegroundColorAttributeName,
                                                           nil] forState:UIControlStateSelected];
        self.tabBar.barTintColor = [UIColor colorWithHexString:MainWhiteColor];
        self.tabBar.translucent = NO;
        [self navigationControllers];
        
    }
    

    tabBarItem中的图片变得特别大怎么解决?

    在赋图片的时候使用UIImageRenderingModeAlwaysOriginal模式
    findNaviVC.tabBarItem.selectedImage=[select2 imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    - (void)navigationControllers{
        HomeViewController *homeVC = [[HomeViewController alloc] init];
        BaseNavigationController *homeNaviVC = [[BaseNavigationController alloc] initWithRootViewController:homeVC];
        homeNaviVC.tabBarItem.title = @"首页";
        homeNaviVC.tabBarItem.image = [UIImage imageNamed:@"1_1"];
        UIImage *select = [UIImage imageNamed:@"1_2"];
        homeNaviVC.tabBarItem.selectedImage = [select imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
        FindViewController *findVC = [[FindViewController alloc] init];
        BaseNavigationController *findNaviVC = [[BaseNavigationController alloc] initWithRootViewController: findVC];
        findNaviVC.tabBarItem.title = @"发现";
        findNaviVC.tabBarItem.image = [UIImage imageNamed:@"1_3"];
        UIImage *select2 = [UIImage imageNamed:@"1_4"];
        findNaviVC.tabBarItem.selectedImage = [select2 imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        
        AccountViewController *accountVC = [[AccountViewController alloc] init];
        BaseNavigationController *accountNaviVC = [[BaseNavigationController alloc] initWithRootViewController:accountVC];
        accountNaviVC.tabBarItem.title = @"我的账户";
        accountNaviVC.tabBarItem.image = [UIImage imageNamed:@"1_5"];
        UIImage *select3 = [UIImage imageNamed:@"1_6"];
        accountNaviVC.tabBarItem.selectedImage = [select3 imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        
        self.viewControllers = @[homeNaviVC,findlNaviVC,accountNaviVC];
    }
    

    TabBar上的title和控制器导航栏的title不一致怎么解决?

    在该tabbarItem对应的导航控制器的RootVC的viewDidLoad中
    使用self.navigationItem.title = @"导航栏首页";
    不要直接self.title = @"导航栏首页";(会冲突)

    更多源码请访问github:https://github.com/zhangjiahuan8888

    相关文章

      网友评论

        本文标题:iOS项目中三级控制器搭建(UITabBarController

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