為何要再寫(xiě)圖片輪播控件
當(dāng)然圖片輪播控件這種東西真是被寫(xiě)爛了然走,這里再寫(xiě)一次的原因有三點(diǎn):一是目前已知的圖片輪播控件都在重復(fù)同樣的功能點(diǎn)(類似于簡(jiǎn)書(shū)客戶端的輪播)缀磕,其實(shí)開(kāi)發(fā)者對(duì)于圖片輪播控件還有很多其它的需求洞渤;二是目前我并沒(méi)有看到比較好的代碼醉蚁,同時(shí)基于開(kāi)發(fā)者對(duì)于輪播控件的復(fù)雜需求拉背,代碼也會(huì)變得復(fù)雜起來(lái)(上千行的代碼實(shí)現(xiàn))住闯;三是我在學(xué)校里組織的興趣小組打算同時(shí)編寫(xiě)iOS断箫、Android舱痘、Web(基于JS)三個(gè)平臺(tái)的代碼,提供一致的特性和服務(wù)偿凭,并將其開(kāi)源杠巡。三個(gè)平臺(tái)的代碼均會(huì)在對(duì)應(yīng)作者的博客中進(jìn)行詳細(xì)講解,代碼作者的詳細(xì)信息如下:
- iOS端請(qǐng)參照梁志鵬的簡(jiǎn)書(shū) 和 Github
- Android端請(qǐng)參照王金戈的簡(jiǎn)書(shū)埃撵、CSDN和Github
- Web端請(qǐng)參照呂浩的
說(shuō)明
該文檔由梁志鵬編寫(xiě)赵颅,如有問(wèn)題請(qǐng)直接在評(píng)論中回復(fù)或郵件聯(lián)系mingjiameng@sina.com。文檔主要描述了用戶需求暂刘、規(guī)范了接口及控制變量饺谬。文檔中的示例均基于iOS平臺(tái),僅供參考谣拣。在具體的代碼實(shí)現(xiàn)中募寨,請(qǐng)注意后期的優(yōu)化(提高安全性、魯棒性森缠、性能等拔鹰,具體請(qǐng)參照),并在接口中提供詳細(xì)的注釋贵涵。把文檔直接當(dāng)一篇文章寫(xiě)的目的有兩個(gè):一是將來(lái)任何一個(gè)人都可以參照這個(gè)文檔嘗試實(shí)現(xiàn)圖片輪播控件格郁;二是這個(gè)文檔正好可以作為控件的使用手冊(cè)。
用戶需求
待更独悴。例书。。話說(shuō)切圖真的好麻煩啊刻炒。决采。。
0.1版本應(yīng)該實(shí)現(xiàn)的功能點(diǎn)
輸入:控件的frame(位置及大蟹匕隆)树瞭、圖片數(shù)組(images)
輸出:一個(gè)圖片輪播組件,該組件帶有指示器(組件內(nèi)部下方的小圓點(diǎn))爱谁,能夠定時(shí)切換圖片并更新指示器晒喷。注意輪播的含義是播放到最后一張圖片后,又重新開(kāi)始播放第一張圖片访敌,這兩張圖片之間的切換效果應(yīng)該和其它圖片之間的切換效果相同凉敲。具體的效果圖參照知乎日?qǐng)?bào)或者簡(jiǎn)書(shū)的圖片輪播組件。
接口:(以iOS為例)
@property (nonatomic, strong, nonnull, readonly) NSArray *images; // image array that you use to initialize this instance.
/*
* you are supposed to use this initializer to get an instance.
* if you try to get an instance by system initializer, you will fail.
* param 'images' should contain only UIImage object, or you will receive a nil instance.
* if array 'images' contain no object, you will receive a nil instance.
*/
- (nullable instancetype)initWithFrame:(CGRect)frame andImages:(nonnull NSArray *)images;
用戶通過(guò)該方法得到一個(gè)控件的實(shí)例,同時(shí)在使用過(guò)程中可以訪問(wèn)images數(shù)組爷抓,但不能修改势决。