*

NXDrawKitを導入してみる

公開日: : ライブラリ解説

ACEDrawingViewがObj-Cで書かれていて、いまいちメンテされてないなぁと感じたので、新しいライブラリということでNXDrawkitを試してみることにしました。

ざっと見た感じ、Canvas,Palette,Toolbarの3つのコンポーネントからなっており、後者2つは無理に使う必要はない。Swift5.0まで対応していて、導入も難しくないかなーと思ってとりあえず導入プロジェクトを描きつつ、日本語解説的なのを作れれば幸いです。

導入

いつものCocoapodです。ターミナルからプロジェクトのフォルダに移動して’pod init’してpodfileを作って以下の記述を追加します
追加したら’pod install’。


  pod 'NXDrawKit'

Xcodeへの導入

IBでは入らないので、Canvasクラスを直接コードで貼ってやります。この場合View.bounds全体に貼った感じですね。
ブラシ情報はdelegateで返す必要があるので CanvasDelegateを実装してfunc brush() -> Brush?をつけてやる必要があります。

import UIKit
import NXDrawKit

class ViewController: UIViewController, CanvasDelegate {
    
    var canvas: Canvas?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let canvasView = Canvas()
        canvasView.frame = self.view.bounds
        canvasView.delegate = self
        self.view.addSubview(canvasView)
        canvas = canvasView
        
    }
    
    // MARK: - Cnavas Delegate
    
    /// Canvasのブラシを返す
    func brush() -> Brush? {
        let brush = Brush()
        
        brush.color = UIColor.black // 色。UIColor.clearを入れると消しゴム扱いになる
        brush.width = 10.0 // 幅
        brush.alpha = 1.0 // α値
        
        return brush
    }
}

最低限、これで単一ブラシでお絵かきできるCanvasが作れます。
Canvasには以下のようなメソッドがあるので、アンドゥ・リドゥ・クリアなどは簡単です(アンドゥバッファは50の模様)。saveについてはOptionalでつけられるDelegateメソッド

func canvas(canvas: Canvas, didSaveDrawing drawing: Drawing, mergedImage image: UIImage?)

が呼ばれるので、そこで画像を保管せい、ということですね。
drawing.strokeがストロークそのもののUIImageを返してくれるので、これを保存すればよいのではないかと。
背景とマージしたりとかいうのもできるようですが。

Canvasのメソッド

func update(backgroundImage: UIImage?)
func undo()
func redo()
func clear()
func save()

これでCanvasは扱えるようになったので、標準のToolbarとかPaletteを使わなければこれだけで大丈夫。与えるBlushだけDelegateで設定すればいいし、メンドクサイなら標準のものを使えばいいし、みたいな感じでしょうかね?
こちらもおいおい、設定してみたいところです。

関連記事

ACEDrawingView導入の解説

【ACEDrawingViewとは】 ACEDrawingViewオープンソースのUIView拡張

記事を読む

HTMLParserを修正する

HTMLスクレイピングしてる時に役立つライブラリであるObjective-C-HMTL-Parser

記事を読む

ACEDrawingView導入の解説(2)

前回の続きで、ACEDrawingViewの紹介になります。 今回はACEDrawingViewと

記事を読む

ENMLからHTMLへの変換

最近EvernoteAPIをいじっているので、コレに関するノウハウをとりあえず断片的に引っかかったと

記事を読む

Xcode10からのimage literal / color literalの指定方法

アセットにあるUIImageの直接指定が可能なImage litera

Xcode11でのバージョン番号の取得方法

Xcode11になってバージョン番号をスクリプトから得て自動で更新する

GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法

情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初

画面回転をしたあとに、UITextViewの先頭を表示する

回転によりサイズが可変するUITextViewで、縦向き(ポートレイト

NXDrawKitを導入してみる

ACEDrawingViewがObj-Cで書かれていて、いまいちメンテ

→もっと見る

    PAGE TOP ↑