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
- CSS實現的背景圖片替代顏色程式碼CSS
- 短視訊直播系統,簡單實現個人主頁背景圖片和文字顏色的更改
- svg圖片 填充顏色SVG
- 兩行 CSS 程式碼實現圖片任意顏色賦色技術CSS
- 使用CSS混合模式和SVG來動態更改產品圖片的顏色CSS模式SVG
- 修改SVG圖片的大小和顏色SVG
- css 更改svg顏色CSSSVG
- iOS 顏色製作背景圖片iOS
- 一個提取圖片顏色的React元件React元件
- iOS 去除 TabBarItem的圖片預設顏色iOStabBar
- 利用bitmap將圖片部分顏色透明
- UIButton點選更改顏色UI
- iphone 更改鍵盤背景顏色iPhone
- 直播原始碼網站,任意更改底部圖示顏色原始碼網站
- Chrome 獲取網頁顏色(文字、圖片)Chrome網頁
- Android 使用ColorMatrix改變圖片顏色AndroidColorMatrix
- 如何更改 Mac 上的游標顏色Mac
- AIX中的Bash顏色更改與配置AI
- 實現隨機顏色隨機
- 交替顏色列表實現
- 利用CSS改變圖片顏色的多種方法!CSS
- Flutter實戰: 如何同時設定Container的圖片和顏色FlutterAI
- win10 如何更改檔案筐顏色_win10更改檔案筐顏色方法Win10
- Mac更改資料夾圖示顏色軟體:Color FolderMac
- 相簿圖片多選、反選 swift實現Swift
- 使用canvas給banner圖片加個顏色條Canvas
- Android通過程式碼修改圖片顏色Android
- PHP 修改圖片顏色(生成彩色二維碼)PHP
- win10 更改控制檯預設顏色方法 win10怎麼更改控制檯顏色Win10
- 利用CSS改變圖片顏色的100種方法!CSS
- 利用顏色實現的口令程式(轉)
- win10工作列顏色更改方法Win10
- android更改EditText下劃線顏色Android
- 如何在 CSS 背景圖片中對 SVG 圖片進行著色 ,修改svg圖片顏色CSSSVG
- 技巧分享:如何利用CSS屬性修改圖片顏色?CSS
- 在View and Data API中更改指定元素的顏色ViewAPI