两种设定UIImageRenderingMode的方式
2015-12-11 本文已影响2187人
嘻嘻zhy
问题
今天在设置NavgationItem上的Bar Button Item时出了点问题。
首先,先添加Bar Button Item。
![Bar Button Item](http://static.zybuluo.com/zandhappy/jfbo3hbnc4wnt78xj6vn2ouy/1EC016C7-8C3F-4067-AC9D-A3562915BDB9.png)
然后设置图片为自己的图片,logo.png。
![logo](http://static.zybuluo.com/zandhappy/jng17t470w02el8qqr5vgcpg/58-58.png)
![Bar Item](http://static.zybuluo.com/zandhappy/fmvlehr9wm88i5vedqdvhnkw/2.png)
奇怪的是这时候StoryBoard上面,显示为一块蓝色。
![StoryBoard](http://static.zybuluo.com/zandhappy/fecml9u7yeeh2ort2pa62cco/3.png)
而且运行的时候,同样出现了这种情况。
![运行后](http://static.zybuluo.com/zandhappy/bkst7gkl75zy8f8o32vxj3um/4.png)
原因具体见这篇文章:
【GeekBand】UITabBarItem与UIImageRenderingMode
这是以前在Tabbar上面设置图标的时候也遇到了问题,并已经解决。
解决(一)
所以我们只要在对应的代码里面这样写
NSArray<UIBarButtonItem*> *array= self.navigationItem.rightBarButtonItems;
UIBarButtonItem *item= array[0];
item.image = [[UIImage imageNamed:@"logo.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
再继续运行
![成功](http://static.zybuluo.com/zandhappy/n67cvf0qg2uxacqiro6c10ze/5.png)
成功实现。
解决(二)
先把一开始设定BarButtonItem的代码删掉。
其实我们这里写代码只是设置了image的RenderingMode模式,可不可以不用代码,在StoryBoard上面直接修改呢?
![BarButtonItem](http://static.zybuluo.com/zandhappy/r8amlqfgku1y7dd3jntyvmei/6.png)
发现BarButtonItem中并没有这个选项。
如果不修改StoryBoard,修改图片可以么?
点击放在Assert.xcassets中的图片。
![Assert.xcassets](http://static.zybuluo.com/zandhappy/94uvz9n44rrpcr23hv7noy9w/7.png)
然后查看选项
![Render As](http://static.zybuluo.com/zandhappy/aj0k2gk0v0jlia54r26lf3fc/8.png)
看到Render As这个选项了吗?
这个选项很关键,把它设置为Original Image。
再次运行。
![成功](http://static.zybuluo.com/zandhappy/n67cvf0qg2uxacqiro6c10ze/5.png)
成功实现!