2016-07-10 11 views
0

Ich versuche, ein UIImage mit einem vorhandenen UIImage und einem String zu erstellen.Wie zeichne ich Text über einem UIImage, um ein neues Image zu erstellen

Ich habe versucht, diesen Code in einem Spielplatz zu nutzen:

import UIKit 

let filter = CIFilter(name: "CIQRCodeGenerator")! 

var data = "cat".dataUsingEncoding(NSISOLatin1StringEncoding, allowLossyConversion: false) 

filter.setValue(data, forKey: "inputMessage") 
filter.setValue("Q", forKey: "inputCorrectionLevel") 

var image = filter.outputImage! 

let scaleX = CGFloat(9.8) 
let scaleY = CGFloat(9.8) 

let img = UIImage(CIImage: image.imageByApplyingTransform(CGAffineTransformMakeScale(scaleX, scaleY))) 

var textColor = UIColor.blackColor() 

var textFont = UIFont(name: "Helvetica Bold", size: 12)! 

let scale = UIScreen.mainScreen().scale 

UIGraphicsBeginImageContextWithOptions(CGSize(width: img.size.width, height: img.size.height), false, scale) 

let textFontAttributes = [ 
    NSFontAttributeName: textFont, 
    NSForegroundColorAttributeName: textColor 
    ] 

img.drawAtPoint(CGPoint(x: 0, y: 100)) 

var rect = CGRectMake(0, 0, img.size.width, img.size.height) 

NSString(string: "cat").drawInRect(rect, withAttributes: textFontAttributes) 

var newImage = UIGraphicsGetImageFromCurrentImageContext() 

UIGraphicsEndImageContext() 

return newImage 

Leider, während dies tut Overlay Text auf das vorhandene Bild, da es ich überlagert auf ein QR-Bild ist würde ich gehen möchte etwas Abstand zwischen dem oberen Rand des QR-Bildes und dem Text.

Ich fühle mich wie dies sollte nicht eine schwierige Sache zu erreichen sein, obwohl einige Anleitung benötigen.

Vielen Dank

+0

Ich verstehe die Frage nicht. Sie zeichnen das Bild mit 'drawAtPoint' und' drawInRect' (warum verwenden Sie beide ???) und den Text mit 'drawInRect'. Sie sagen also, wohin sie gehen. Wenn Sie nicht mögen, wo Sie sie hinstellen, legen Sie sie, wo Sie möchten. – matt

+0

Mein Fehler, ich habe Code eingegeben, den ich versucht habe zu arbeiten. Es wurde aktualisiert. –

Antwort

0

Ich erkannte, was ich falsch gemacht habe.

Der erste Raum, den ich mit dieser Linie erstellt:

UIGraphicsBeginImageContextWithOptions(CGSize(width: img.size.width, height: img.size.height), false, scale) 

wurde die Höhe des ziehbar Raum zu begrenzen.

So versuchte ich dann das Bild 100 y niedriger zu ziehen mit:

img.drawAtPoint(CGPoint(x: 0, y: 100)) 

obwohl es abgeschnitten wurde zu werden.

Also dann merkte ich, ich brauchte den anfänglichen Raum größer wie diese zu machen:

UIGraphicsBeginImageContextWithOptions(CGSize(width: img.size.width, height: img.size.height + 100), false, scale) 

Dank!