素材解析源碼包更新(素材網(wǎng)第三方解析網(wǎng)站)
今天給各位分享素材解析源碼包更新的知識(shí),其中也會(huì)對(duì)素材網(wǎng)第三方解析網(wǎng)站進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開始吧!
本文目錄一覽:
素材解析網(wǎng)站接口如何獲取
1、進(jìn)行簡(jiǎn)單設(shè)置,將ViewSource添加到Safari擴(kuò)展菜單,在Safari打開任意一個(gè)網(wǎng)頁(yè)后,點(diǎn)擊底部的分享按鈕,第二行的擴(kuò)展菜單滑動(dòng)至最右,選擇更多,在活動(dòng)頁(yè)面,找到ViewSource并將開關(guān)打開,這樣ViewSource就添加到Safari擴(kuò)展菜單了。
2、找尋一些可用的在線解析。
3、查看網(wǎng)頁(yè)源代碼,獲取解析接口。
素材與源碼是什么意思
分別是寫作和計(jì)算機(jī)的專業(yè)術(shù)語(yǔ)。
素材,指的是作者從現(xiàn)實(shí)生活中搜集到的、未經(jīng)整理加工的、感性的、分散的原始材料。源碼是指編寫的最原始程序的代碼,是未編譯的按照一定的程序設(shè)計(jì)語(yǔ)言規(guī)范書寫的文本文件,是一系列人類可讀的計(jì)算機(jī)語(yǔ)言指令。
源碼主要功用,1、生成目標(biāo)代碼,即計(jì)算機(jī)可以識(shí)別的代碼。2、對(duì)軟件進(jìn)行說(shuō)明,即對(duì)軟件的編寫進(jìn)行說(shuō)明。為數(shù)不少的初學(xué)者,甚至少數(shù)有經(jīng)驗(yàn)的程序員都忽視軟件說(shuō)明的編寫,因?yàn)檫@部分雖然不會(huì)在生成的程序中直接顯示,也不參與編譯。
iOS 李明杰 MJRefresh源碼解析
MJRefresh 是著名開發(fā)者及培訓(xùn)講師李明杰老師的作品,到現(xiàn)在在github已經(jīng)有10000多顆star,真真是極好用的iOS下拉刷新(也支持上拉加載更)控件。本文主要素材來(lái)源有 正在學(xué)hybrid開發(fā)的iOS開發(fā)者 J_Knight 的文章和 github 上李明杰老師的用法介紹(主要是本文下部分)。
該框架的結(jié)構(gòu)設(shè)計(jì)得很清晰,使用一個(gè)基類MJRefreshComponent來(lái)做一些基本的設(shè)定,然后通過(guò)繼承的方式,讓MJRefreshHeader和MJRefreshFooter分別具備下拉刷新和上拉加載的功能。從繼承機(jī)構(gòu)來(lái)看可以分為三層,具體可以從下面的圖里看出來(lái):
其中一條繼承鏈?zhǔn)沁@樣的
開發(fā)者一般使用場(chǎng)景是這樣的:
作者 在類目 UIScrollView+MJRefresh 中運(yùn)用運(yùn)行時(shí)關(guān)聯(lián)屬性函數(shù) objc_setAssociatedObject 和 objc_getAssociatedObject 對(duì) UIScrollView 視圖控件添加了 mj_header 、 mj_footer 等屬性.
MJRefreshNormalHeader 是最下層的子類, headerWithRefreshingTarget 和 headerWithRefreshingBlock 是最上層基類 MJRefreshComponent 暴露出的靜態(tài)快捷構(gòu)造方法。把對(duì)象的創(chuàng)建下放到子類,此處明顯用到了工廠方法。編譯時(shí)類型 mj_header is classof MJRefreshHeader ,運(yùn)行時(shí)類型 MJRefreshNormalHeader 是其子類,此處是典型的多態(tài)特性的應(yīng)用。
即面向接口編碼,而非面向?qū)崿F(xiàn)編碼。作者從最上層基類 MJRefreshComponent 即暴露接口
具體實(shí)現(xiàn):
具體實(shí)現(xiàn),首先來(lái)看一下該控件的基類:MJRefreshComponent:
這個(gè)類作為該控件基類,涵蓋了基類所具備的成份:狀態(tài),回調(diào)block等,大致分成下面這5種職能:
監(jiān)聽(tīng)的聲明:offset、size、state
對(duì)于監(jiān)聽(tīng)的處理:
從上面等結(jié)構(gòu)圖可以看出,緊接著這個(gè)基類,下面分為codeMJRefreshHeader/code和codeMJRefreshFooter/code,這里順著codeMJRefreshHeader/code這個(gè)分支向下展開:
codeMJRefreshHeader/code繼承于codeMJRefreshComponent/code,它做了這幾件事:
初始化有兩種方法:動(dòng)作-目標(biāo)/block塊函數(shù) 做回調(diào)
通過(guò)重寫codeprepare/code方法來(lái)設(shè)置header的高度:
通過(guò)重寫placeSubviews方法來(lái)重新調(diào)整y值:
這里提供一張圖來(lái)體現(xiàn)三個(gè)狀態(tài)的不同:
這個(gè)類是codeMJRefreshHeader/code類的子類,它做了兩件事:
給一張圖,讓大家直觀感受一下這兩個(gè)控件:
這個(gè)類通過(guò)覆蓋父類三個(gè)方法來(lái)實(shí)現(xiàn)上述兩個(gè)實(shí)現(xiàn):
在這里,將每一個(gè)狀態(tài)對(duì)應(yīng)的提示文字放入一個(gè)字典里面,codekey/code是狀態(tài)的codeNSNumber/code形式
這里主要是對(duì)codelastUpdatedTimeLabel/code和codestateLabel/code進(jìn)行布局。要注意codelastUpdatedTimeLabel/code隱藏的情況。
在這里,根據(jù)傳入的codestate/code不同,在codestateLabel/code和codelastUpdatedTimeLabel/code里切換相應(yīng)的文字。
codeMJRefreshNormalHeader /code繼承于 codeMJRefreshStateHeader/code,它主要做了兩件事:
給一張圖來(lái)直觀感受一下這兩個(gè)view:
同codeMJRefreshStateHeader/code一樣,也是重寫了父類的三個(gè)方法:
到此為止,我們已經(jīng)從codeMJRefreshComponent/code到codeMJRefreshNormalHeader/code的實(shí)現(xiàn)過(guò)程看了一遍??梢钥闯?,作者將codeprepare/code,codeplaceSubviews/code以及 setState: 方法作為基類的方法,讓下面的子類去一層一層實(shí)現(xiàn)。
而每一層的子類,根據(jù)自身的職責(zé),分別按照自己的方式來(lái)實(shí)現(xiàn)這三個(gè)方法:
這樣做的好處是,如果想要增加某種類型的 header ,只要在某一層上做文章即可。例如該框架里的 MJRefreshGifHeader ,它和 MJRefreshNormalHeader 屬于同一級(jí),都是繼承于 MJRefreshStateHeader 。因?yàn)槎叨季哂邢嗤问降?stateLabel 和 lastUpdatedTimeLabel ,唯一不同的就是左側(cè)的部分:
還是提供一張圖來(lái)直觀感受一下:
下面我們來(lái)看實(shí)現(xiàn):
它提供了兩個(gè)接口,是用來(lái)設(shè)置不同狀態(tài)下使用的圖片數(shù)組的:
和MJRefreshNormalHeader一樣,它也重寫了基類提供的三個(gè)方法來(lái)實(shí)現(xiàn)顯示gif圖片的職能。
素材解析源碼包更新的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于素材網(wǎng)第三方解析網(wǎng)站、素材解析源碼包更新的信息別忘了在本站進(jìn)行查找喔。
掃描二維碼推送至手機(jī)訪問(wèn)。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。