読者です 読者をやめる 読者になる 読者になる

mzgkworks

iOSを中心にプログラミング関係について書く

【Swift】描画ライブラリ ACEDrawingViewで画像表示時にViewにスケールを合わせる方法

手軽に導入できて高機能な描画ライブラリ「ACEDrawingView」。
描いて保存した画像をViewに表示する際(画像のロード)に何もしないと、ViewにScaleFitしないで表示される。
で、表示→再描画→保存→表示→再描画としていくと、描いた絵がおかしくなっていく。
保存時はViewの2倍(Retina対応?)で保存されて、表示時はViewにそのまま表示される(ViewのModeを設定しても無効)。
解決方法がどこにもなかったので、備忘録として。

環境

  • Xcode 7.0.1
  • Swift 2.0
  • ACEDrawingView 1.3(cocoaPodsで導入)

ACEDrawingView

https://github.com/acerbetti/ACEDrawingView

導入・使用方法

詳細な内容が「Developers.IO」さんで紹介されているので、そこを参照。

[iOS] 超簡単!ACEDrawingView でお絵描きアプリを作ってみよう | Developers.IO

記事内の画像ロード部分の対応方法が、この記事。

画像ロード時のサイズフィット方法

ACEDrawingViewのプロパティである「drawMode」の設定を行う。

/// 保存した画像を表示する時
// モードを設定し直し
drawView.drawMode = ACEDrawingMode.Scale
// 画像を取得
let path = FileManager.pathOfHomeDirectory()
let lastPath = (path as NSString).stringByAppendingPathComponent("sample.png")
let image = UIImage(contentsOfFile: lastPath)
// 画像をViewに表示
drawView.loadImage(image)

初期設定は、ライブラリ側で設定されている。

// 初期設定(ライブラリ側:ACEDrawingView.m)
- (void)configure
{
    // init the private arrays
    self.pathArray = [NSMutableArray array];
    self.bufferArray = [NSMutableArray array];
    
    // set the default values for the public properties
    self.lineColor = kDefaultLineColor;
    self.lineWidth = kDefaultLineWidth;
    self.lineAlpha = kDefaultLineAlpha;
    
    // ↓ココで設定されている
    self.drawMode = ACEDrawingModeOriginalSize;
...
}

以上