2015-02-03 24 views
6

में UIImage में एक पृष्ठभूमि रंग सेट करने के मैं drawInRect() विधि का उपयोग कर एक छवि आकर्षित मेरी आयत 120 * 120 के आकार है और मेरी छवि 100 * 100 है कैसे मैं में मेरी छवि के लिए एक पृष्ठभूमि रंग सेट कर सकते हैं स्विफ्टकैसे तेजी से प्रोग्रामिंग

+0

आप एक वास्तविक UIImage वस्तु है, तो आप सिर्फ सकता है अपनी '.backgroundcolor' संपत्ति सेट करें। – aspyct

उत्तर

6

इस एक्सटेंशन का उपयोग कर सकते हैं:

extension UIImage { 
    func imageWithColor(tintColor: UIColor) -> UIImage { 
     UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale) 

     let context = UIGraphicsGetCurrentContext() as CGContextRef 
     CGContextTranslateCTM(context, 0, self.size.height) 
     CGContextScaleCTM(context, 1.0, -1.0); 
     CGContextSetBlendMode(context, kCGBlendModeNormal) 

     let rect = CGRectMake(0, 0, self.size.width, self.size.height) as CGRect 
     CGContextClipToMask(context, rect, self.CGImage) 
     tintColor.setFill() 
     CGContextFillRect(context, rect) 

     let newImage = UIGraphicsGetImageFromCurrentImageContext() as UIImage 
     UIGraphicsEndImageContext() 

     return newImage 
    } 
} 

और फिर

image.imageWithColor("#1A6BAE".UIColor) 
3

आपके UIImageView की पृष्ठभूमि रंग संपत्ति का उपयोग करना शायद सबसे अच्छा है।

blackColor 
darkGrayColor 
lightGrayColor 
whiteColor 
grayColor 
redColor 
greenColor 
blueColor 
cyanColor 
yellowColor 
magentaColor 
orangeColor 
purpleColor 
brownColor 
clearColor 

आप के बजाय प्रोग्राम के रूप में एक दिया रंग के साथ एक UIImage बनाना चाहते हैं, तो आप इस प्रकार यह कर सकते हैं:

self.imageView.backgroundColor = UIColor.redColor() 

निम्नलिखित प्रीसेट रंगों मौजूद - इस प्रकार आप यह कर सकते हैं

var rect = CGRectMake(0, 0, size.width, size.height) 
UIGraphicsBeginImageContextWithOptions(size, false, 0) 
color.setFill() 
UIRectFill(rect) 
var image: UIImage = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 

जहां var 'छवि' आपके रंगीन UIImage है।

+0

यह पृष्ठभूमि रंग संपत्ति ठीक काम करती है लेकिन जब मैं छवि को सहेजता हूं तो पृष्ठभूमि रंग अभी भी सफेद –

+0

है इसलिए मैं इस कोड का उपयोग करता हूं UIGraphicsBeginImageContextWithOptions (CGSizeMake (120,120), झूठी, 1.0) rect2 = CGRectMake (0, 0, displayImage.size दें। । चौड़ाई, displayImage.size.height) दें संदर्भ = UIGraphicsGetCurrentContext() UIColor.redColor() सेट() CGContextFillRect (संदर्भ, rect2) displayImage.drawInRect (rect2) छवि = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // displayImage 100 * 100 का आकार है –

4

स्विफ्ट 3 के लिए

extension UIImage { 
    static func imageWithColor(tintColor: UIColor) -> UIImage { 
     let rect = CGRect(x: 0, y: 0, width: 1, height: 1) 
     UIGraphicsBeginImageContextWithOptions(rect.size, false, 0) 
     tintColor.setFill() 
     UIRectFill(rect) 
     let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
     UIGraphicsEndImageContext() 
     return image 
    } 
} 

प्रयोग @ अंडमुख के समाधान अपडेट किया गया:

UIImage.imageWithColor(tintColor: <Custom color>) 
3

एक एक्सटेंशन के साथ एक पृष्ठभूमि रंग के साथ एक छवि प्राप्त करने के लिए एक अन्य तरीका है: (स्विफ्ट 3)

extension UIImage { 

    /** 
     Returns an UIImage with a specified background color. 
     - parameter color: The color of the background 
    */ 
    convenience init(withBackground color: UIColor) { 

     let rect: CGRect = CGRect(x: 0, y: 0, width: 1, height: 1) 
     UIGraphicsBeginImageContext(rect.size); 
     let context:CGContext = UIGraphicsGetCurrentContext()!; 
     context.setFillColor(color.cgColor); 
     context.fill(rect) 

     let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
     UIGraphicsEndImageContext() 

     self.init(ciImage: CIImage(image: image)!) 

    } 
} 

और फिर:

// change UIColor.white with your color 
let image = UIImage(withBackground: UIColor.white) 
संबंधित मुद्दे