着色(Tint Color)

着色(Tint Color)是iOS7界面中的一个重大改变,你可以设置一个UIImage在渲染时是否使用当前视图的Tint Color。UIImage新增了一个只读属性:renderingMode,对应的还有一个新增方法:imageWithRenderingMode:,它使用UIImageRenderingMode枚举值来设置图片的renderingMode属性。该枚举中包含下列值:

  1. UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。 

  2. UIImageRenderingModeAlwaysOriginal // 始终绘制图片原始状态,不使用Tint Color。 

  3. UIImageRenderingModeAlwaysTemplate // 始终根据Tint Color绘制图片,忽略图片的颜色信息。 

renderingMode属性的默认值是UIImageRenderingModeAutomatic,即UIImage是否使用Tint Color取决于它显示的位置。


iOS7过渡指南中说到:

iOS 7中,着⾊色是UIView的⼀一个属性。iOS 7app会使⽤用着⾊色来定义⼀一个关键⾊色,这个颜⾊色表明这⾥里是可交互的,或者表⽰示元素选中的状态。 当你指定某个视图的着⾊色的时候,这个颜⾊色会⾃自动继承到所有的⼦子视图中。因为UIWindows继承⾃自UIView,你可以这样通过设置窗体的着⾊色属性指定着⾊色: 

window.tintColor = [UIColor purpleColor]; 

如果不为窗体指定着⾊色,则会使⽤用系统默认的颜⾊色。

默认情况下,视图的着⾊色是nil,意味着视图使⽤用⽗父级的着⾊色。也就是说哪怕你不设置着⾊色的 话,视图也总能够获取到⼀一个⾊色值。

总的来说,最好在视图还没有显⽰示到屏幕上之前指定它的着⾊色。想让视图继承上个层级的着 ⾊色的话,就将着⾊色设置为nil。 

重要:iOS7不支持通过外观代理API来设置着色

当警告框(alert)和上拉菜单(action sheet)出现的时候,iOS 7⾃自动将背后视图的着⾊色变 暗。为了响应该⾊色彩变化,在渲染时使⽤用tintColor的⾃自定义视图的⼦子类需要重写tintColorDidChange⽅方法,以便在合适的时候刷新渲染。

注意:在iOS 6中,tintColor可以⽤用来给导航栏的背景着⾊色、tab栏、⼯工具栏、 搜索栏、搜索栏的范围选择栏着⾊色。⽽而在iOS 7中,给背景着⾊色只需要使⽤用barTintColor属性就可以了。 



你可能感兴趣的:(着色(Tint Color))