環境:Swift2.1
UIImage と UILabel を合成する方法について。
UIImage をセットした UIImageView を作成、そしてそれに UILabel を addSubview する。
UIImageView(UIView) が持つ CALayer プロパティの
renderInContext
メソッドでグラフィックコンテキストに描画する。グラフィックコンテキストから描画した画像を取得する。
以下、サンプルコード。UIImage は前回記事のcolorImage
メソッドを使って作成している。
let yellowImage = UIImage.colorImage(color: UIColor.yellowColor(), size: CGSize(width: 100, height: 100)) let yellowImageView = UIImageView(image: yellowImage) let myLabel = UILabel(frame: CGRect(x: 10, y: 10, width: 80, height: 17)) myLabel.text = "Hello!" myLabel.backgroundColor = UIColor.greenColor() myLabel.textAlignment = .Center yellowImageView.addSubview(myLabel) UIGraphicsBeginImageContextWithOptions(yellowImageView.frame.size, false, UIScreen.mainScreen().scale) if let context = UIGraphicsGetCurrentContext() { yellowImageView.layer.renderInContext(context) let newYellowImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() let newYellowImageView = UIImageView(image: newYellowImage) }
Playground での実行結果