效果圖
項(xiàng)目地址:https://github.com/lll1024/JVDrawingBoard
說(shuō)明
這是一個(gè)簡(jiǎn)潔的小畫板 可以畫雙箭頭尊剔、單箭頭叙赚、涂鴉等 還可以編輯和撤銷裙品。總共包含兩個(gè)類:
-
JVDrawingLayer
: 繼承自CAShapeLayer
,根據(jù)傳入的枚舉值type基于貝塞爾曲線而繪制不同的形狀呛谜。 -
JVDrawingView
: 負(fù)責(zé)顯示以及手勢(shì)邏輯
下面是對(duì)JVDrawingLayer
里邊方法的說(shuō)明:
+ (JVDrawingLayer *)createLayerWithStartPoint:(CGPoint)startPoint type:(JVDrawingType)type;
當(dāng)手在屏幕上開始移動(dòng)的時(shí)候便會(huì)調(diào)用這個(gè)方法,會(huì)根據(jù)起始點(diǎn)和傳入的枚舉值type創(chuàng)建不同的形狀的path枪萄,目前只有五種形狀隐岛,分別是單箭頭、雙箭頭瓷翻、雙杠聚凹、直線和涂鴉割坠。
- (NSInteger)caculateLocationWithPoint:(CGPoint)point;
當(dāng)點(diǎn)擊屏幕時(shí)用這個(gè)方法來(lái)判斷點(diǎn)擊位置是否在繪制線條上,如果在則返回具體的位置:JVDrawingTouch
枚舉值頭部妒牙、中部和尾部(涂鴉除外)彼哼。
- (void)movePathWithStartPoint:(CGPoint)startPoint;
- (void)movePathWithEndPoint:(CGPoint)EndPoint;
- (void)movePathWithPreviousPoint:(CGPoint)previousPoint currentPoint:(CGPoint)currentPoint;
- (void)movePathWithStartPoint:(CGPoint)startPoint isSelected:(BOOL)isSelected;
- (void)movePathWithEndPoint:(CGPoint)EndPoint isSelected:(BOOL)isSelected;
- (void)movePathWithPreviousPoint:(CGPoint)previousPoint
currentPoint:(CGPoint)currentPoint
isSelected:(BOOL)isSelected;
對(duì)于非涂鴉線條來(lái)說(shuō),編輯可以是平移也可以拖拽頭部和尾部湘今,以上6個(gè)方法分別對(duì)應(yīng)選中和非選中狀態(tài)下的三種編輯方法敢朱。
- (void)moveGrafiitiPathPreviousPoint:(CGPoint)previousPoint currentPoint:(CGPoint)currentPoint;
這是對(duì)涂鴉的平移方法,涂鴉只能平移摩瞎。
- (void)addToTrack;
- (BOOL)revokeUntilHidden;
這是添加軌跡和撤銷的方法拴签,當(dāng)沒有操作可供撤銷時(shí)撤銷操作就成了刪除方法了。
上面只是簡(jiǎn)單介紹了這些方法是干什么的旗们,但知道怎么用是不夠的蚓哩,你的需求可能跟我繪制的形狀有出入,這樣就只能對(duì)具體繪制的方法做一些修改或者添加了蚪拦。我接下來(lái)也會(huì)對(duì)這些shape做一些添加和修改杖剪,比如在雙箭頭和雙杠中間添加文字,旋轉(zhuǎn)的時(shí)候也能跟著轉(zhuǎn)驰贷。
以上如有幫助歡迎star