ACEDrawingView導入の解説(2)
公開日:
:
ライブラリ解説 ACEDrawingView, MITライセンス, オープンソース, カスタムコンポーネント, ペイント
前回の続きで、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拡張
- PREV
- ACEDrawingView導入の解説
- NEXT
- 実機テストしたときのデータを取り出す