美文网首页
UITabBarController、UINavigationC

UITabBarController、UINavigationC

作者: ly_chee_ | 来源:发表于2020-07-10 15:24 被阅读0次

UITabBarController、UINavigationController相关设置

1、新建一个MainTabBarViewController继承UITabBarController

2、在viewDidLoad方法里修改tabBar属性

    self.tabBar.backgroundColor = [UIColor whiteColor];  //修改tabbar背景颜色

    self.tabBar.translucent = NO;   //tabbar背景设为不透明

    //与修改背景图片配合使用,隐藏tabbar上面的线
     [self.tabBar setShadowImage:[[UIImage alloc] init]]; 

    [self.tabBar setBackgroundImage:[[UIImage alloc] init]];

3、设置UIViewController对应的tabBarItem 属性

vc.tabBarItem.title=@“首页”;    //控制tabbar 每个标签的文字

// 让TabBarItem 显示出我们设置的图片的真实样子,而非系统自动渲染的颜色
 vc.tabBarItem.image = [ [UIImage imageNamed:@“image”] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];

vc.tabBarItem.selectedImage = [[UIImage imageNamed:@"selectImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];

//控制TabBarItem选中、未选中 的字体、颜色
[vc.tabBarItem setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:UIColorFromRGB(0x999999,1)}  forState:UIControlStateNormal];

[vc.tabBarItem setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:ThemeColor}  forState:UIControlStateSelected];

vc.tabBarController.tabBar.tintColor = ThemeColor; //控制TabBarItem 的背景颜色

/*
该方法设置的是 UITabBar 的 Item 未选中颜色,这样选中的颜色就能正常显示了,目前发现是在iOS13的系统上才会出现问题,tab颜色变系统蓝
 */

    if(@available(iOS13.0, *)) {

        [[UITabBar appearance] setUnselectedItemTintColor:UIColorFromRGB(0x999999,1)];

    }

4、设置UIViewController对应的UINavigationController 属性

使用HBDNavigationController进行管理更加方便

//包装一个导航控制器后,再称为TabBar的子控制器
UINavigationController *navC = [[HBDNavigationController alloc] initWithRootViewController: vc];

[self addChildViewController:navC];

5、新建一个BaseViewController继承UIViewController,统一设置Nav属性

其他controller继承BaseViewController即可

self.hbd_blackBarStyle = YES;    //状态栏颜色、默认为黑色

self.hbd_barTintColor = [UIColor whiteColor];    //  背景颜色

self.hbd_barShadowHidden = YES;    //隐藏nav下面线

//并不真正隐藏导航栏,只是把它变透明了,当然事件是可以穿透的,也正因为并不真正隐藏导航栏,才可以在导航栏有无之间平滑而优雅地切换
self.hbd_barHidden =YES;

如果使用图片来设置背景,并且希望带有透明度,使用带有透明度的图片即可。

如果需要毛玻璃效果,那么设置给hbd_barTintColor的值应该带有透明度,具体数值根据色值的不同而不同。不要通过hbd_barAlpha来调整毛玻璃效果,它是用来动态控制导航栏背景的透与暗的,就像掘金收藏页面那个效果一样。

相关文章

网友评论

      本文标题:UITabBarController、UINavigationC

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