【Swift】描画ライブラリ ACEDrawingViewで画像表示時にViewにスケールを合わせる方法
手軽に導入できて高機能な描画ライブラリ「ACEDrawingView」。
描いて保存した画像をViewに表示する際(画像のロード)に何もしないと、ViewにScaleFitしないで表示される。
で、表示→再描画→保存→表示→再描画としていくと、描いた絵がおかしくなっていく。
保存時はViewの2倍(Retina対応?)で保存されて、表示時はViewにそのまま表示される(ViewのModeを設定しても無効)。
解決方法がどこにもなかったので、備忘録として。
環境
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; ... }
以上