UIImage渲染模式 imageWithRenderingMode:

UIImage渲染模式

设置UIImage的渲染模式:UIImage.renderingMode
着色(Tint Color)是iOS7界面中的一个设置UIImage的渲染模式,你可以设置一个UIImage在渲染时是否使用当前视图的Tint Color。

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

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

OC版本代码

childVc.tabBarItem.selectedImage = [[UIImage imageNamed:selectImage] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

设置与不设置的效果图:
设置时:

未设置时:


我们发现图片的原始状态是橙色,设置渲染时始终绘制图片的原始状态就是上面的效果了。而下面蓝色的效果是apple原来就有的。

Swift版本代码

  var homeImageView: UIImageView!
  var homeSwitchImageView: UIImageView!
  self.homeImageView.image = UIImage(named: "home")!.imageWithRenderingMode(.AlwaysTemplate)
  self.homeImageView.tintColor = UIColor.whiteColor()

  self.homeSwitchImageView.image = UIImage(named: "switch")!.imageWithRenderingMode(.AlwaysOriginal)
  self.homeSwitchImageView.tintColor = UIColor.whiteColor()

imageWithRenderingMode设置不同的样式的效果图

Paste_Image.png

推荐阅读更多精彩内容