*

ACEDrawingView導入の解説(2)

前回の続きで、ACEDrawingViewの紹介になります。
今回はACEDrawingViewとACEDrawingToolType、ACEDrawingViewDelegate プロトコルに関する解説になります。
ACEDrawingToolプロトコルとそのプロトコルを実装した各種のACEDrawing**Toolクラスについては、また別途紹介したいと思います。

ACEDrawingView

(親クラス:UIView)

概要

ACEDrawingViewは、タッチによるペイントツールを提供するビューです。このビューは単独でタッチに対応して描画を実行することができ、適切なパラメータをプロパティとして与えることで、描画ツールの切替や描画色、ペンサイズの設定、透明度(アルファ)の設定などをすることが可能です。また、Undo/Redo機能を備え、描画の取り消しややり直しをおこなうことができます。
Undo/Redoは、1回の描画(ACEDrawingViewの領域をタップして、指を離すか、領域外に出るまで)を1ステップとして、1ステップ単位で実行することができます。
描画ツールや色の指定は、プロパティ値の変更で行うことができ、これらのプロパティを参照することで現在値を参照することができます。
描画結果はUIImage形式のプロパティとして取得することが可能です。

プロパティ

drawTool

@property (nonatomic, assign) ACEDrawingToolType drawTool;
ACEDrawingToolについては、下にACEDrawingToolTypeの解説があるのでそちらを参照して下さい。
現在利用している描画ツールです。値を変更することでツールを切り替えることができます。
初期値はACEDrawingToolTypePenです。

delegate

@property (nonatomic, assign) id delegate;
delegateを指定します。delegateの動作についてはACEDrawingViewDelegateの解説を参照して下さい。

lineColor

@property (nonatomic, strong) UIColor *lineColor;
描画色を指定します。lineColorとありますが、フリーハンド描画時や塗りつぶし描画時の色も、この色を利用します。
初期値は[UIColor blackColor]です。

lineWidth

@property (nonatomic, assign) CGFloat lineWidth;
塗りつぶしでない描画をする時の線のサイズです。単位はポイント(Retinaの場合、1ポイント=2ピクセルになります)です。
初期値は10.0です。

lineAlpha

@property (nonatomic, assign) CGFloat lineAlpha;
描画のアルファ値(0.0〜1.0)を指定します。
初期値は1.0です。

image

@property (nonatomic, strong, readonly) UIImage *image;
現在の描画結果を取得することができます(読み取り専用)。

prev_image

@property (nonatomic, strong) UIImage *prev_image;
最後の描画前の描画結果(Undo実行時の結果)を取得することができます。

undoSteps

@property (nonatomic, readonly) NSUInteger undoSteps;
Undo可能なステップ数です(読み取り専用)。

インスタンスメソッド

loadImage:

– (void)loadImage:(UIImage *)image;
UIImage形式で画像を読み込み、描画を領域を全て置き換えます。
画像サイズとビューのサイズが一致しない場合は、アスペクト比を考慮せず、ビューのサイズに合わせて拡大/縮小されます。
このメソッドを実行するとUndoバッファを初期化するため、前の状態に戻すことができなくなります。

loadImageData:

– (void)loadImageData:(NSData *)imageData;
NSData形式で画像を読み込みます。NSDataは[UIImage imageWithData: scale:]クラスメソッドでUIImageのインスタンスが作成可能なものを指定します。
このメソッドを実行するとUndoバッファを初期化するため、前の状態に戻すことができなくなります。

clear

– (void)clear;
描画とUndoバッファを全て初期化します。この処理を行うと前の状態に戻すことができなくなります。

canUndo

– (BOOL)canUndo;
Undo処理の可否をBOOL値で返します。
YESであればUndo可能です。

undoLatestStep

– (void)undoLatestStep;
Undo可能な場合、1ステップ分の描画のUndoを実行します

canRedo

– (BOOL)canRedo;
Redo処理の可否をBOOL値で返します。
YESであればRedo可能です。

redoLatestStep

– (void)redoLatestStep;
Redo可能な場合、1ステップ文の描画のRedoを実行します。

ACEDrawingToolType

typedef enum {
ACEDrawingToolTypePen,
ACEDrawingToolTypeLine,
ACEDrawingToolTypeRectagleStroke,
ACEDrawingToolTypeRectagleFill,
ACEDrawingToolTypeEllipseStroke,
ACEDrawingToolTypeEllipseFill,
ACEDrawingToolTypeEraser
} ACEDrawingToolType;

概要

ACEDrawingToolTypeは、ACEDrawingViewで使用するツールの種類を表現する列挙型です。

ACEDrawingToolTypePen

フリーハンド描画ツール

ACEDrawingToolTypeLine

ラインツール

ACEDrawingToolTypeRectagleStroke

ボックスツール

ACEDrawingToolTypeRectagleFill

ボックス(塗りつぶし)ツール

ACEDrawingToolTypeEllipseStroke

円形ツール
描画の指定は、タッチの始点と終点を対角線とするボックスに内接する円になります。

ACEDrawingToolTypeEllipseFill

円形(塗りつぶし)ツール

ACEDrawingToolTypeEraser
消しゴムツール
フリーハンド描画と同様の操作で描画を消すことができます。領域をボックスや円形で指定して消すことはできません。

ACEDrawingViewDelegate プロトコル

いずれのメソッドも実装必須ではありません。

プロトコルメソッド

drawingView:willBeginDrawUsingTool:

– (void)drawingView:(ACEDrawingView *)view willBeginDrawUsingTool:(id)tool;
ACEDrawingViewによる描画が始まった時点でコールされます。

view

描画の対象になっているACEDrawingViewです。

tool

描画に使われようとしているツールを示します。

drawingView:didEndDrawUsingTool:

– (void)drawingView:(ACEDrawingView *)view didEndDrawUsingTool:(id)tool;
ACEDrawingViewによる描画が終了した時点でコールされます。

view

描画の対象になっているACEDrawingViewです。

tool

描画に使われたツールを示します。

関連記事

HTMLParserを修正する

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

記事を読む

ENMLからHTMLへの変換

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

記事を読む

NXDrawKitを導入してみる

ACEDrawingViewがObj-Cで書かれていて、いまいちメンテされてないなぁと感じたので、新

記事を読む

ACEDrawingView導入の解説

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

記事を読む

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

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

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

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

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

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

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

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

NXDrawKitを導入してみる

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

→もっと見る

    PAGE TOP ↑