1.下面這段代碼可以更改圖片的顏色,但是只能更為只用顏色.比如你是灰色的圖片,你想更改為紅色或是其他顏色都可以用如下代碼實(shí)現(xiàn):
import UIKit
extension UIImage {
func imageWithTintColor(tintColor:UIColor, blendMode:CGBlendMode) -> UIImage {
UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0)
tintColor.setFill()
let bounds = CGRectMake(0, 0, self.size.width, self.size.height)
UIRectFill(bounds)
self.drawInRect(bounds, blendMode: blendMode, alpha: 1.0)
if blendMode != .DestinationIn {
self.drawInRect(bounds, blendMode: .DestinationIn, alpha: 1.0)
}
let tintedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return tintedImage
}
}
2.直接在需要更給圖片顏色的控制器中直接使用:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var imageV: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
let img = UIImage(named: "圖片")?.imageWithTintColor(UIColor.redColor(), blendMode: .Overlay)
imageV.image = img
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
3.好吧你只要使用如上代碼就可以實(shí)現(xiàn)圖片更改顏色了.
4.什么音五?你告訴我蘋果官方有個更簡單的改變圖片的顏色屬性。
UIImageRenderingModeAlwaysTemplate 是UIImage渲染模式renderingMode枚舉類型中的其中一個蜕提,除去這個外還有另外兩個
UIImageRenderingModeAutomatic? ? ? ? // 根據(jù)圖片的使用環(huán)境和所處的繪圖上下文自動調(diào)整渲染模式(默認(rèn)屬性)离陶。
UIImageRenderingModeAlwaysOriginal? // 始終繪制圖片原始狀態(tài)纷宇,設(shè)置Tint Color屬性無效孔飒。
UIImageRenderingModeAlwaysTemplate? // 始終根據(jù)Tint Color繪制圖片(顏色)顯示,忽略圖片的顏色信息(也就是圖片原本的東西是不顯示的)萤衰。
調(diào)用此屬性
UIImage *image = [UIImage imageNamed:@"111.jpg"];
image = [image imageWithRenderingMode: UIImageRenderingModeAlwaysTemplate];
有何用處
個人經(jīng)常用到的有兩種
A
美工切出來一個返回按鈕? 顏色是黃色 但有一個頁面需要這個返回按鈕是紅色? 那就沒必要美工再切一張紅色的按鈕堕义,而是利用UIImageRenderingModeAlwaysTemplate這個屬性把黃色按鈕改成紅色
例? 代碼
UIImage *image = [UIImage imageNamed:@"111.jpg"];
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
imageView.image = image;
imageView.tintColor = [UIColor purpleColor];
[self.view addSubview:imageView];
B
UIButton 的點(diǎn)擊狀態(tài)? 因?yàn)閁IButton設(shè)置背景色? 點(diǎn)擊UIButton? 是沒有點(diǎn)擊色的? 但是UIButton的背景圖片有點(diǎn)擊色 那就可以利用UIImageRenderingModeAlwaysTemplate這個屬性改變?nèi)我庖粡垐D片的顏色為我們需要的那個顏色
例? 代碼
UIImage *image = [UIImage imageNamed:@"111.jpg"];
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
btn.tintColor = [UIColor brownColor];
[btn setBackgroundImage:image forState:UIControlStateNormal];
[self.view addSubview:btn];