IOS 一个继承UITabBarController的子类(UIImageRenderingMode)

前言:很多人用到这个的时候,会问为什么选中的图片不是他们设置的那张图片,究其原因是RenderingMode(渲染)的默认模式是UIImageRenderingModeAutomatic,我们需要将其改为UIImageRenderingModeAlwaysOriginal这个模式。

示例代码如下:

vc.tabBarItem.selectedImage = [[UIImage imageNamed:imagename] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

说一下UIImage的渲染模式:

        UIImage新增了一个只读属性:renderingMode,对应的还有一个新增方法:imageWithRenderingMode:,它使用UIImageRenderingMode枚举值来设置图片的renderingMode属性。该枚举中包含下列值:

  1. UIImageRenderingModeAutomatic  // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。  
  2. UIImageRenderingModeAlwaysOriginal   // 始终绘制图片原始状态,不使用Tint Color  
  3. UIImageRenderingModeAlwaysTemplate   // 始终根据Tint Color绘制图片,忽略图片的颜色信息。

.h文件

#import <UIKit/UIKit.h>

@interface BasicTabBarController : UITabBarController

@end

.m文件

#import "BasicTabBarController.h"

@interface BasicTabBarController ()

@end

@implementation BasicTabBarController

- (void)viewDidLoad {
    [super viewDidLoad];
    //1.设置tabBar的背景颜色
    self.tabBar.barTintColor = [UIColor whiteColor];
    //2.字体颜色
    self.tabBar.tintColor = KGlobalBlue;
    //3.添加所有控制器
    [self addSubViewController];
}

#pragma mark 添加所有控制器
- (void)addSubViewController
{
    [self addChildViewControllerWithClassname:@"IWHomeVC" imagename:@"tabbar_home" title:@"首页"];
    [self addChildViewControllerWithClassname:@"IWBusinessVC" imagename:@"tabbar_business" title:@"商家"];
    [self addChildViewControllerWithClassname:@"IWDiscoveryVC" imagename:@"tabbar_discovery" title:@"发现"];
    [self addChildViewControllerWithClassname:@"IWMyVC" imagename:@"tabbar_my" title:@"我的"];
}

#pragma mrak 添加子控制器
- (void)addChildViewControllerWithClassname:(NSString *)classname
                                  imagename:(NSString *)imagename
                                      title:(NSString *)title {
    
    UIViewController *vc = [[NSClassFromString(classname) alloc] init];
    vc.title = title;
    vc.tabBarItem.title = title;
    vc.tabBarItem.image = [UIImage imageNamed:[imagename stringByAppendingString:@"_gray"]];
    vc.tabBarItem.selectedImage = [[UIImage imageNamed:imagename] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    [self addChildViewController:vc];
}

@end


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值