【注意】最后更新于 November 26, 2015,文中内容可能已过时,请谨慎使用。
设置UIImage的渲染模式:UIImage.renderingMode
在 iOS 7 中 UIImage 添加了一个 renderingMode
属性。我们可以使用 imageWithRenderingMode:
并传入一个合适的UIImageRenderingMode
来指定这个 image 要不要以 Template 的方式进行渲染。
1
2
3
4
5
6
7
8
9
10
11
| UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。
UIImageRenderingModeAlwaysOriginal // 始终绘制图片原始状态,不使用Tint Color。
UIImageRenderingModeAlwaysTemplate // 始终根据Tint Color绘制图片,忽略图片的颜色信息。
UIImage *img = [UIImage imageNamed:@"myimage"];
img = [img imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
//实际效果,效果依旧显示为baritem的Tint Color
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:setImage
style:UIBarButtonItemStylePlain
target:self
action:@selector(setAction:)];
|
在新的 Xcode 中,我们可以直接在 Image Asset 里的 Render As 选项来指定是不是需要作为 template 使用。相应的,在UIApperance
中,Apple 也为我们对于 Size Classes
添加了相应的方法。使用 +appearanceForTraitCollection:
方法,我们就可以针对不同 trait 下的应用的 apperance 进行很简单的设定。
1
2
| UIView.appearanceForTraitCollection(UITraitCollection(verticalSizeClass:.Compact)).tintColor = UIColor.redColor()
UIView.appearanceForTraitCollection(UITraitCollection(verticalSizeClass:.Regular)).tintColor = UIColor.greenColor()
|