2016-07-10 7 views
0

既存のUIImageとStringを使用してUIImageを作成しようとしています。新しい画像を作成するためにUIImageの上にテキストを描画する方法

私は運動場の中にこのコードを使用しようとしてきた

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 

残念ながら、これは既存の画像の上にオーバーレイテキストをしながら、それは私が上のオーバーレイてるQRイメージですので、私は残したいですQR画像の最上部とテキストの間のスペース。

私はこれを達成するのは難しいことではないと感じていますが、いくつかのガイダンスが必要です。

ありがとうございました

+0

質問が分かりません。あなたは 'drawAtPoint'と' drawInRect'(なぜ両方を使用していますか?)と 'drawInRect'でテキストを描画しているのはあなたです。だから彼らはどこに行くのか言っている。あなたが置いている場所が気に入らなければ、好きなところに置いてください。 – matt

+0

私は悪いです、私は仕事に挑戦していたコードを入れました。それを更新しました。 –

答えて

0

私は間違っていたことを理解しました。

私はこの行で作成された初期容量:

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

が描画可能な空間の高さを制限しました。

だから私は、その後、使用して100 yの下の画像を描画してみました:

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

それが断たなったが。

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

ありがとう:

は、だから私はその後、私はこのような背の高い初期のスペースを作るために必要な実現しました!

関連する問題