UIButton設置背景圖片時,是需要一張圖片才可以。但是我又想直接通過UIColor來設置,那怎么辦?
0x01.Objective C版本
有個方法是可以將UIColor轉(zhuǎn)化成UIImage對象,可以畫出圖片,不用讓美工MM去設計一張圖片,省時間,實際項目還是做成圖片的好。
實際使用中將下面代碼貼在.m文件包含頭文件下的開頭位置處即可。
@interface UIImage (Color)
+ (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size;
@end
@implementation UIImage (Color)
+ (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size
{
CGRect rect = CGRectMake(0, 0, size.width, size.height);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context,color.CGColor);
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
@end
使用實例如下:
self.slider = [[UISlider alloc] init];
CGSize size = CGSizeMake(1.0, 1.0);
UIImage *image = [UIImage imageWithColor:[UIColor redColor] size:size];
[self.slider setThumbImage:image forState:UIControlStateNormal];
0x02.swift版本。
import Foundation
import UIKit
extension UIImage {
class func imageWithColor(_ color: UIColor) -> UIImage {
let rect = CGRect(x: 0, y: 0, width: 1.0, height: 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
context?.setFillColor(color.cgColor)
context?.fill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
}
使用方法:
slider = UISlider()
slider.setThumbImage(UIImage.imageWithColor(UIColor.red), for: UIControlState())