2015-02-03 5 views

Antwort

6

Sie auch diese Erweiterung verwenden können:

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 
    } 
} 

Und dann

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

Es ist wahrscheinlich am besten, die backgroundColor-Eigenschaft Ihres UIImageView zu verwenden. Sie können dies wie folgt -

self.imageView.backgroundColor = UIColor.redColor() 

Die folgenden voreingestellten Farben bestehen:

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

Wenn Sie stattdessen programmatisch eine UIImage mit einer bestimmten Farbe erstellen möchten, können Sie dies wie folgt:

Wo die var "Bild" ist Ihre farbigen UIImage.

+0

Diese BackgroundColor-Eigenschaft funktioniert gut, aber wenn ich das Bild speichern, ist die Hintergrundfarbe immer noch weiß –

+0

, also benutze ich diesen Code UIGraphicsBeginImageContextWithOptions (CGSizeMake (120,120), falsch, 1,0) let rect2 = CGRectMake (0, 0, displayImage.size. . Breite, displayImage.size.height) let context = UIGraphicsGetCurrentContext() UIColor.redColor() set() CGContextFillRect (context, RECT2) displayImage.drawInRect (RECT2) image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // displayImage ist eine Größe von 100 * 100 –

4

aktualisiert @ Egghead-Lösung für Swift 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 
    } 
} 

Verbrauch:

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

Eine andere Möglichkeit, ein Bild mit einer Hintergrundfarbe mit einer Verlängerung zu erhalten, ist: (Swift 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)!) 

    } 
} 

Und dann:

// change UIColor.white with your color 
let image = UIImage(withBackground: UIColor.white)