tintColor

  • 每一个view都有一个tintcolor,类似于魔法色,实现类似于换肤的效果。
  • 每一个view的subview都集成view的tintcolor,当然subview可以指定自己的tintcolor
  • 如果不指定的话,默认为blue

对于tabBar,不指定tintColor的话,效果如下:


如果指定了tintColor为黄色,效果如下:

self.tabBar.tintColor = UIColor.yellowColor()

UIImageRenderingMode

在iOS7以后,每个image的渲染模式有两种,一种是作为原图来渲染,一种是作为模板。作为模板来渲染时,系统会根据这种图片的alpha值来得到一个新的图片,原图的RGB色值不会被考虑。而tintColor的颜色是新图片的颜色。

每一个image在创建时候,渲染模式都是UIImageRenderingModeAutomatic,即根据上下文来选择渲染模式。根据文档,在导航栏、tabBar、toolbar等的前景图(foreground images)会在模板模式下被渲染。所以,如果我们在初始化tabBarItem时,如果不指定渲染模式为UIImageRenderingModeAlwaysOriginal,就会得到一个色块,而不是原图。

例子

        self.tabBar.tintColor = UIColor.yellowColor()
self.pigVC?.tabBarItem = UITabBarItem.init(title: "pig",
image:TGResizeImage(image!,byRatio: 0.5),
tag: 1);
self.catVC?.tabBarItem = UITabBarItem.init(title: "cat",
image:TGResizeImage(image!,byRatio: 0.5).imageWithRenderingMode(.AlwaysOriginal),
tag: 0);

设置了一个UITabBarController,有5个VC。pigVCtabBarItem初始化时,没有指定对应的imageview的renderingMode,而tabBartintColor又是黄色。对比catVC,初始化tabBarItem时,imageView的renderingMode指定为.AlwaysOriginal。效果如下:


可以看出pigVC在选中态、未选中态时,对应tabBarItem的图像都是色块,不同的是选中时,色块颜色是指定的tintColor,即黄色。
catVC在选中态、未选中态时,对应的tabBarItem的图像都是原图。
两个tabBarItem的文字的颜色在选中态都是tintColor对应的颜色。

UIView中的tintColor和renderingMode的更多相关文章

  1. UIView 中 frame, bounds, center 属性的关系

    最近一直在学 iOS 开发,所以专门创建了这样一个类别,将自己学习中的一些问题整理,记录下来.由于自己是初学者,所以所写的文章非常基础,写这个类别一是为了给自己留下存 档,二是为了给和我有同样问题的初 ...

  2. Shder中实现TintColor

    [Shder中实现TintColor] TintColor实现上相当于一个滤镜,若TintColor的R为0,则原图的R通道颜色应该为0.基于此,实现TintColor很容易,原图颜色直接乘以Tint ...

  3. UIView 中 hidden、alpha、clear color 与 opaque 的区别

    透明度与图层混合相关,影响到图片绘制的效率. hidden 此属性为 BOOL 值,用来表示 UIView 是否隐藏.关于隐藏大家都知道就是让 UIView 不显示而已,但是需要注意的是: 当前 UI ...

  4. ios 中的tintColor

    在iOS 7后,UIView新增加了一个tintColor属性,这个属性定义了一个非默认的着色颜色值,其值的设置会影响到以视图为根视图的整个视图层次结构.它主要是应用到诸如app图标.导航栏.按钮等一 ...

  5. UIView中的坐标转换

    在使用 UITableViewCell 的frame属性获取origin得到的坐标是不变的. 也就是说如果UITableView初始化完毕后,每个cell的坐标是固定的,x不变,y 随index递增的 ...

  6. UIView中常见的方法总结

    addSubview: 添加一个子视图到接收者并让它在最上面显示出来.- (void)addSubview:(UIView *)view[讨论]这方法同样设置了接收者为下一个视图响应对象.接收者保留视 ...

  7. IOS-- UIView中的坐标转换

    // 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值 - (CGPoint)convertPoint:(CGPoint)point toView:(UI ...

  8. UIView 中bounds和frame的差别

    搞iOS开发的童鞋基本都会用过UIView,那他的bounds和frame两个属性也不会陌生,那这两个有什么实质性的区别呢? 先看到下面的代码你肯定就明白了一些: -(CGRect)frame{    ...

  9. 关于UIView中相关坐标及改变的相关方法

    // 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值 - (CGPoint)convertPoint:(CGPoint)point toView:(UI ...

随机推荐

  1. Nginx源码完全注释(9)nginx.c: ngx_get_options

    本文分析 ngxin.c 中的 ngx_get_options 函数,其影响: nginx.c 中的: static ngx_uint_t ngx_show_help; static ngx_uint ...

  2. 线上服务内存OOM问题定位

    转自:架构师之路,http://mp.weixin.qq.com/s/iOC1fiKDItn3QY5abWIelg 相信大家都有感触,线上服务内存OOM的问题,是最难定位的问题,不过归根结底,最常见的 ...

  3. [模板]割点(tarjan)

    洛谷P3388 注意:记得tarjan的打法 注意割点的判断条件:子节点个数>2并且为根节点  当它不为根节点时并且low[to]>dfn[u] 判断时是在子节点未被记录的时候 #incl ...

  4. tornado异步请求非阻塞-乾颐堂

    前言 也许有同学很迷惑:tornado不是标榜异步非阻塞解决10K问题的嘛?但是我却发现不是torando不好,而是你用错了.比如最近发现一个事情:某网站打开页面很慢,服务器cpu/内存都正常.网络状 ...

  5. realsense pcl git

    https://github.com/Ext4FAT/Registration vc++ pcl realsense  矿泉水瓶子 https://github.com/dBeker/PCL-Real ...

  6. nginx与tomcat 组合 实现静态文件和jsp组合访问

    主要修改nginx的配置文件: 设置代理 location /{proxy_pass http://47.94.158.2:8080;proxy_redirect off;proxy_set_head ...

  7. windows7配置git 免密码登录git服务器

    1.在桌面右击“Git Bash Here ” 2.输入:cd ~/.ssh/ 3.输入你的git服务器的用户 git config --global user.name "xx" ...

  8. javascrip总结43:标签上自定义属性的操作

    1 获取标签属性 语法: element.getAttribute('属性名') 返回对应属性的值 ,如果没有返回null. //html <div id="box" ind ...

  9. HDU 1111 Secret Code (DFS)

    题目链接 题意 : 给你复数X的Xr和Xi,B的Br和Bi,让你求一个数列,使得X = a0 + a1B + a2B2 + ...+ anBn,X=Xr+i*Xi,B=Br+Bi*i : 思路 : 首 ...

  10. OpenNI depth深度数据的数据格式

    图像如何打开 如何查看它的数据格式并一个个读取 试一下ENVI等 可见,灰度图的Data只有一个值[0],而彩色图的Data却有三个值[142,119,113]. 这是用ENVI的Cursor Val ...