Swift 實現更改圖片的顏色
1.下面這段程式碼可以更改圖片的顏色,但是隻能更為只用顏色.比如你是灰色的圖片,你想更改為紅色或是其他顏色都可以用如下程式碼實現:
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.好吧你只要使用如上程式碼就可以實現圖片更改顏色了.
4.什麼?你告訴我蘋果官方有個更簡單的改變圖片的顏色屬性。
UIImageRenderingModeAlwaysTemplate 是UIImage渲染模式renderingMode列舉型別中的其中一個,除去這個外還有另外兩個
UIImageRenderingModeAutomatic // 根據圖片的使用環境和所處的繪圖上下文自動調整渲染模式(預設屬性)。
UIImageRenderingModeAlwaysOriginal // 始終繪製圖片原始狀態,設定Tint Color屬性無效。
UIImageRenderingModeAlwaysTemplate // 始終根據Tint Color繪製圖片(顏色)顯示,忽略圖片的顏色資訊(也就是圖片原本的東西是不顯示的)。
呼叫此屬性
UIImage *image = [UIImage imageNamed:@"111.jpg"];
image = [image imageWithRenderingMode: UIImageRenderingModeAlwaysTemplate];
有何用處
個人經常用到的有兩種
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 的點選狀態 因為UIButton設定背景色 點選UIButton 是沒有點選色的 但是UIButton的背景圖片有點選色 那就可以利用UIImageRenderingModeAlwaysTemplate這個屬性改變任意一張圖片的顏色為我們需要的那個顏色
例 程式碼
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];
相關文章
- 動態更改svg圖片的顏色SVG
- 用SVG的圖片格式如何劃入更改圖片的顏色?SVG
- 短視訊直播系統,簡單實現個人主頁背景圖片和文字顏色的更改
- svg圖片 填充顏色SVG
- 兩行 CSS 程式碼實現圖片任意顏色賦色技術CSS
- 更改placeholder顏色
- 使用CSS混合模式和SVG來動態更改產品圖片的顏色CSS模式SVG
- XMind怎麼更改線條顏色?XMind更改線條顏色的方法
- 修改SVG圖片的大小和顏色SVG
- css 更改svg顏色CSSSVG
- 一個提取圖片顏色的React元件React元件
- 利用bitmap將圖片部分顏色透明
- Flutter實戰: 如何同時設定Container的圖片和顏色FlutterAI
- 直播原始碼網站,任意更改底部圖示顏色原始碼網站
- 如何更改 Mac 上的游標顏色Mac
- Android通過程式碼修改圖片顏色Android
- Chrome 獲取網頁顏色(文字、圖片)Chrome網頁
- 利用CSS改變圖片顏色的100種方法!CSS
- 利用CSS改變圖片顏色的多種方法!CSS
- 實現隨機顏色隨機
- win10 如何更改檔案筐顏色_win10更改檔案筐顏色方法Win10
- Mac更改資料夾圖示顏色軟體:Color FolderMac
- android更改EditText下劃線顏色Android
- win10 更改控制檯預設顏色方法 win10怎麼更改控制檯顏色Win10
- 使用canvas給banner圖片加個顏色條Canvas
- 如何更改 Linux 終端顏色主題Linux
- 如何在 CSS 背景圖片中對 SVG 圖片進行著色 ,修改svg圖片顏色CSSSVG
- 技巧分享:如何利用CSS屬性修改圖片顏色?CSS
- CSS 實現字型顏色漸變CSS
- 高階切圖技巧!基於單張圖片的任意顏色轉換
- Win10如何更改游標指標顏色樣式 win10更改滑鼠指標顏色樣式的步驟Win10指標
- 改變SVG圖的顏色SVG
- Mac電腦游標顏色怎麼更改Mac
- Photoshop2020如何把圖片轉為RGB顏色模式模式
- 如何在Mac上更改資料夾顏色,給你的Mac資料夾換個顏色Mac
- 短視訊系統,不改變背景顏色的基礎上更改邊框和字型顏色
- 如何在 Mac 上更改資料夾顏色,改變 mac 資料夾顏色教程Mac
- 直播小程式原始碼,Swift 獲取漸變色顏色值原始碼Swift
- css文字顏色漸變的3種實現CSS