一個(gè)簡(jiǎn)潔的小畫(huà)板

效果圖

2017-05-05 09.57.45.gif

項(xiàng)目地址:https://github.com/lll1024/JVDrawingBoard

說(shuō)明

這是一個(gè)簡(jiǎn)潔的小畫(huà)板 可以畫(huà)雙箭頭、單箭頭、涂鴉等 還可以編輯和撤銷(xiāo)??偣舶瑑蓚€(gè)類(lèi):

  • JVDrawingLayer: 繼承自CAShapeLayer,根據(jù)傳入的枚舉值type基于貝塞爾曲線而繪制不同的形狀。
  • JVDrawingView: 負(fù)責(zé)顯示以及手勢(shì)邏輯

下面是對(duì)JVDrawingLayer里邊方法的說(shuō)明:

+ (JVDrawingLayer *)createLayerWithStartPoint:(CGPoint)startPoint type:(JVDrawingType)type;

當(dāng)手在屏幕上開(kāi)始移動(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;

這是添加軌跡和撤銷(xiāo)的方法,當(dāng)沒(méi)有操作可供撤銷(xiāo)時(shí)撤銷(xiāo)操作就成了刪除方法了。

上面只是簡(jiǎn)單介紹了這些方法是干什么的,但知道怎么用是不夠的,你的需求可能跟我繪制的形狀有出入,這樣就只能對(duì)具體繪制的方法做一些修改或者添加了。我接下來(lái)也會(huì)對(duì)這些shape做一些添加和修改,比如在雙箭頭和雙杠中間添加文字,旋轉(zhuǎn)的時(shí)候也能跟著轉(zhuǎn)。

以上如有幫助歡迎star

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,023評(píng)論 25 709
  • 本章中迄今為止的繪制實(shí)施例中大多會(huì)產(chǎn)生一個(gè)UIImage對(duì)象,主要是通過(guò)調(diào)用UIGraphicsBeginImag...
    shenzhenboy閱讀 1,431評(píng)論 0 4
  • 特別通告: 1、本周五晚,將會(huì)在“世間事三群”對(duì)參加本周活動(dòng)的所有作品進(jìn)行夜評(píng)。屆時(shí)世間事主編洛子帥會(huì)協(xié)同評(píng)審團(tuán)成...
    孤獨(dú)一刀閱讀 508評(píng)論 10 11
  • 下班后,不急不慌一個(gè)人往住處走,望去,泛黃的路燈映襯到被雨水打濕的樹(shù)葉上,昏暗的光線穿透到濕漉漉的地上!身旁無(wú)數(shù)個(gè)...
    鼓子雨閱讀 365評(píng)論 0 1

友情鏈接更多精彩內(nèi)容