UIImageに影付き文字を挿入する方法について
お世話になります。
iOSアプリでUIImageに直接文字を書き入れるような動作があるアプリを製作中なのですが、その文字に影をいれようとしたところ、上手く動作しませんでした。
文字列の背景色を設定するオプションなどは正常に動作します。
上記問題を解決するには、どのような方法があるでしょうか。
何卒、ご協力ください。
開発環境は
Xcode 8.3.3
Swift 3.1
iPhone6s(iOS10.1.1), iPhone6Plus(10.2.1)
です。
ソースコード及び引数、返却値は下記の通りです。
引数
text:String 描画する文字列です。
image:UIImage この画像に文字列を描画します。
返却値
- newImage ここに文字描画後の画像を代入することが目的となります。
ソース
let font = UIFont.boldSystemFont(ofSize: 20)
let imageWidth = image.size.width
let imageHeight = image.size.height
let rect = CGRect(x:0, y:0, width:imageWidth, height:imageHeight)
UIGraphicsBeginImageContextWithOptions(image.size, false, 0)
image.draw(in: rect)
let textRect = CGRect(x:0, y:0, width:imageWidth, height:imageHeight)
let textStyle = NSMutableParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
let shadow = NSShadow()
shadow.shadowColor = UIColor.red
shadow.shadowOffset = CGSize(width: 50, height: 30)
shadow.shadowBlurRadius = 1
let textFontAttributes = [
NSFontAttributeName: font,
NSForegroundColorAttributeName: UIColor.black,
NSParagraphStyleAttributeName: textStyle,
NSShadowAttributeName:shadow
]
text.draw(in: textRect, withAttributes: textFontAttributes)
let newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext()