2

でカスタム イメージを作成しようとしていますiOS。画像は、たとえばソーシャル サイトへの共有に使用されます。

例として、ユーザーは として参照されている写真を選択する場合がありますUIImage。この画像を使用して、元の画像を含む別の画像を作成します。

アイデアは、ポラロイド スタイルのイメージを作成し、下部にいくつかの書き込み/文言を作成することです。これを達成するための最良の方法は何ですか?

私の最初の考えはXIB、レイアウトを制御する を作成し、このオフスクリーンを開始し、スナップショットを使用して完成UIImagedeallocたビューを作成することです。それとも使ったほうがいいCGContextDrawImageですか?心配なのはレイアウトです。特定のレイアウトを必要とするアイテムが複数ある場合、コンテキスト描画は簡単に達成できます。

4

3 に答える 3

1

以下の画像を作成できました: ポラロイド

次の方法を使用します。

  1. ポラロイドのように XIB をセットアップします。 静的 私のものはかなり静的ですが、ファイル所有者やその他の魔法を使用して、画像とテキストを簡単に設定できます。

  2. 次のようにクラス ファイルをセットアップします。

    import Foundation
    import UIKit
    
    class LoveIs: UIView {
    
    class func instanceFromNib() -> UIView {
        return UINib(nibName: "Polaroid", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! UIView
    }    }
    
  3. 次のように、メイン ビュー コントローラー (画像を「フェッチ」するもの) をセットアップします。

    var loveIs: UIView? = nil
    
    loveIs = LoveIs.instanceFromNib()
    
    loveIs?.layer.borderColor = UIColor.darkGrayColor().CGColor
    loveIs?.layer.borderWidth = 5
    UIGraphicsBeginImageContext((loveIs?.bounds.size)!)
    loveIs?.layer.renderInContext(UIGraphicsGetCurrentContext()!)
    
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    UIImageWriteToSavedPhotosAlbum(image, self, nil, nil)
    
于 2016-04-07T19:35:15.507 に答える
0

UIView を作成し、それに UIImageView と UILabel を追加できます。次に、そのビューのスクリーンショットを撮ります。

解決策 1:

UIGraphicsBeginImageContext(screenShotView.bounds.size)
screenShotView.layer.renderInContext(UIGraphicsGetCurrentContext()!)
letscreenShot  = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

解決策 2:

var screenShot:UIView = screenShotView.snapshotViewAfterScreenUpdates(true)
UIGraphicsBeginImageContextWithOptions(screenShotView.bounds.size, true, 0.0)
screenShot.drawViewHierarchyInRect(screenShotView.bounds, afterScreenUpdates: true)
var shotCapture :UIImage = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();
于 2016-04-11T19:49:49.307 に答える