iOS 畫(huà)板/涂鴉 你畫(huà)我猜 demo (OC版)

下載地址:https://github.com/linsendear/LSDrawTest

錄制腳本:

播放腳本:


這個(gè)demo參考了下面兩個(gè)項(xiàng)目

https://github.com/WillieWu/HBDrawingBoardDemo

https://github.com/Nicejinux/NXDrawKit

也針對(duì)這兩個(gè)demo做了相應(yīng)的優(yōu)化

結(jié)構(gòu):由上至下

1、最上層的UIView(LSCanvas)

使用CAShapeLayer,提高繪制時(shí)的效率

2、第二層的UIImageview是用來(lái)合成LSCanvas用的

這樣畫(huà)很多次的時(shí)候,也不會(huì)占用很高的cpu

3、第三層是UIImageview,是用來(lái)放背景圖的


關(guān)于錄制腳本:

1、//linyl標(biāo)記的代碼都是跟錄制腳本和繪制腳本相關(guān)

2、錄制后需要重新跑程序,因?yàn)檫@只是個(gè)demo

還需要優(yōu)化的地方:


1、在不同設(shè)備上,需要根據(jù)畫(huà)板比例調(diào)整point和線寬等(或者固定畫(huà)板大小)。

2、當(dāng)前的記錄方式是用歸檔的方式,每次有動(dòng)作(撤銷,重做,保存,清空)和每次的touchsend

后,都會(huì)記錄成一個(gè)LSDrawPackage對(duì)象。如果想使用socket傳輸時(shí),可以改為每0.5秒一個(gè)LSDrawPackage對(duì)象

,也就是說(shuō),每個(gè)LSDrawPackage對(duì)象都是一段時(shí)間內(nèi)的繪制和操作。(還有一種做法是傳送圖片或關(guān)鍵幀,但這時(shí)候需要評(píng)估網(wǎng)絡(luò)能力,還有繪制的感覺(jué)也不一樣)

3、線程處理

demo中使用的是performselector的方式,還需要優(yōu)化。

4、當(dāng)前的繪制端和顯示端公用了很多的內(nèi)部結(jié)構(gòu)。

PS:

1、沒(méi)使用drawrect

2、使用橡皮擦?xí)r,cpu占用率還是非常高。

3、近期沒(méi)有更新計(jì)劃了。如果做socket傳輸?shù)臅r(shí)候,包大小,結(jié)構(gòu)還有很大的優(yōu)化空間。

最后編輯于
?著作權(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)容

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