AJ分享,必须精品

一:效果对比

当我们设置tabBarController的tabBarItem.image的时候,默认情况下会出现图片变成蓝色的效果,这是因为ios7之后会对图片自动渲染成蓝色
代码

 UIViewController *home = [[UIViewController alloc]init];
//设置标题
home.tabBarItem.title = @"首页";
//设置未选中时候的图片
home.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"];
//设置选中时候的图片
home.tabBarItem.selectedImage = [UIImage imageNamed:@"tabbar_home_selected"]; home.view.backgroundColor = [UIColor blueColor];

效果:

我们需要改成这样的效果

二:解决方法

解决方法有两个,一种是用xcode自带的功能设置,另一种是用纯代码的方式来解决——之前猫猫见过自定义的tabBar。。。弱爆了(有增加了一点牛zhuang掰bi手段 )

第一种,代码方式解决

代码:

    //首页
UIViewController *home = [[UIViewController alloc]init]; home.tabBarItem.title = @"首页"; home.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"];
UIImage *selImage = [UIImage imageNamed:@"tabbar_home_selected"];
//设置渲染模式为原始
home.tabBarItem.selectedImage = [selImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; home.view.backgroundColor = [UIColor blueColor];

注意上下对比下原来代码,

第二种方法

在图片中找到图片 第三个 –》 render as(渲染器) –》 original image(原始的图片)

选中第二个 original image 就ok了 不过这方法要挨着设置

三:建立UIImage的分类

直接建立分类 一句代码搞定

然后写代码了就是

UIImage+image.h中的代码

//
// UIImage+image.h
// Created by apple on 15-7-22.
// Copyright (c) 2015年 znycat. All rights reserved.
// #import <UIKit/UIKit.h> @interface UIImage (image) /**
* 加载最原始的图片,没有渲染过
*
* @param imageName 图片名称
*
* @return UIImage对象
*/
+(instancetype)imageWithOriginalName:(NSString *)imageName; @end

UIImage+image.m中的代码

//
// UIImage+image.m // Created by apple on 15-7-22.
// Copyright (c) 2015年 znycat. All rights reserved.
// #import "UIImage+image.h" @implementation UIImage (image) +(instancetype)imageWithOriginalName:(NSString *)imageName
{ //ios7之后会自动渲染,不让渲染有两种方法
//1:在图片中找到图片 第三个 --》 render as(渲染器) --》 original image(原始的图片)
//2:代码设置
UIImage *image = [UIImage imageNamed:imageName];
//设置渲染模式为原始
return [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
} @end

四:调用

这样调用的时候直接一句代码就可以完成了

首先要在头文件导入

#import "UIImage+image.h"

然后调用就这样掉

    home.tabBarItem.selectedImage = [UIImage imageWithOriginalName:@"tabbar_home_selected"];

AJ学IOS 之微博项目实战(3)微博主框架-UIImage防止iOS7之后自动渲染_定义分类的更多相关文章

  1. AJ学IOS 之微博项目实战(1)微博主框架-子控制器的添加

    AJ分享,必须精品 一:简单介绍 这是新浪微博的iOS端项目,来自于黑马的一个实战项目. 主要分成五大模块,本次全部运用纯代码实现,其中会用到很多前面学过得内容,如果有的地方有重复的知识点,说明这个知 ...

  2. AJ学IOS 之微博项目实战(2)微博主框架-自定义导航控制器NavigationController

    AJ分享,必须精品 一:添加导航控制器 上一篇博客完成了对底部的TabBar的设置,这一章我们完成自定义导航控制器(NYNavigationController). 为啥要做自定义呢,因为为了更好地封 ...

  3. 猫猫学iOS 之微博项目实战(2)微博主框架-自己定义导航控制器NavigationController

    猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 一:加入导航控制器 上一篇博 ...

  4. AJ学IOS 之微博项目实战(5)微博自定义搜索框searchBar

    AJ分享,必须精品 一:效果 用UITextField简单定义一个搜索框 二:调用: 调用的代码,很简单,直接init就可以,以后加功能自己添加就行了. - (void)viewDidLoad { [ ...

  5. AJ学IOS 之微博项目实战(10)微博cell中图片的显示以及各种填充模式简介

    AJ分享,必须精品 :一效果 如果直接设置会有拉伸等等的状况,这里主要介绍图片显示的一些细节 二:代码 代码实现其实很简单,微博当中用了一个photos来存放九宫格这些图片,然后用了一个photo类来 ...

  6. AJ学IOS 之微博项目实战(9)微博模型之时间相关重要操作,判断刚刚,昨天,今年等等

    AJ分享,必须精品 一:效果 二:实现代码 /** 1.今年 1> 今天 * 1分内: 刚刚 * 1分~59分内:xx分钟前 * 大于60分钟:xx小时前 2> 昨天 * 昨天 xx:xx ...

  7. AJ学IOS 之微博项目实战(4)微博自定义tabBar中间的添加按钮

    AJ分享,必须精品 一:效果图 自定义tabBar实现最下面中间的添加按钮 二:思路 首先在自己的tabBarController中把系统的tabBar设置成自己的tabBar(NYTabBar),这 ...

  8. 猫猫学iOS 之微博项目实战(5)微博自己定义搜索框searchBar

    猫猫分享.必须精品 原创文章.欢迎转载. 转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 用UITextField简单定义一个搜索框 二:调用 ...

  9. AJ学IOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题

    AJ分享,必须精品 一:效果 二:项目代码 这个Demo用的几个控制器分别画了不通的xib,随便拖拽了几个空间,主要是几个按钮的切换,主要代码展示下: // // NYViewController.m ...

随机推荐

  1. 在macOS平台下制作SSL证书,免费域名通配符证、单域名证书、多域名证书教程

    1.安装 home-brew 2.安装 certbot 在终端执行下面命令 brew install certbot 3.制作SSL证书 第一步: 在终端执行下面命令 sudo certbot cer ...

  2. 基于 websocket 的多端桥接平台

    我们现在的业务是基于新闻客户端实现的,都要经过新闻客户端的环境,进行前后端数据上的交互.但是我们在调试过程中,非常的不方便. 通常使用的工具有:modheader, postman, fiddler ...

  3. 洛谷P1957口算练习题题解

    前言: 题目传送门:https://www.luogu.com.cn/problem/P1957 其实这很简单 纯模拟撒~~~~ 正文开始: _话说 ,就当本蒟蒻正高高兴兴的刷水题时,居然 碰到了这个 ...

  4. ASP.NET Core AutoWrapper 自定义响应输出

    前言 AutoWrapper是一个简单可自定义全局异常处理程序和ASP.NET Core API响应的包装.他使用ASP.NET Core middleware拦截传入的HTTP请求,并将最后的结果使 ...

  5. 你所不知道的 C# 中的细节

    前言 有一个东西叫做鸭子类型,所谓鸭子类型就是,只要一个东西表现得像鸭子那么就能推出这玩意就是鸭子. C# 里面其实也暗藏了很多类似鸭子类型的东西,但是很多开发者并不知道,因此也就没法好好利用这些东西 ...

  6. 累加数的贡献 CodeForces - 1213D2

    题意: 第一行输入n,k,表示有n个数,可以进行整除2操作,要是数组有k个相等的数,最少需要几次操作. 思路: 用一个数组记录每一个数出现的次数,如果一开始大于等于k,直接输出0,否则对这n个数进行从 ...

  7. 调试 node.js 程序

    调试 node.js 程序 在程序开发中,如何快速的查找定位问题是一项非常重要的基本功.在实际开发过程中,或多或少都会遇到程序出现问题导致无法正常运行的情况,因此,调试代码就变成了一项无法避免的工作. ...

  8. 本地缓存Ehcache

    1,什么是Ehcache    Ehcache是纯java的开源缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider.它主要面向通用缓存.Java EE和轻量级容器, ...

  9. 3.用IntelliJ IDEA 创建Maven

    一.File→New→ Project (需要下载安装配置Maven等,这些步骤省略) 二.Maven→org.apache.maven.archetypes:maven-archetype-quic ...

  10. 医学图像分割-在3DSlicer中使用英伟达的AI辅助工具NvidiaAIAssistedAnnotation自动切割医学图像教程

    前期准备 下载3DSlicer并安装: 3DSlicer官网(http://www.slicer.org)或者直接下载(https://download.slicer.org),需要注意目前该插件只支 ...