接口說明
- 實際封裝后的代碼并未用到SDWebImage氮块,僅僅傳入圖片即可了赌。如果要傳入網絡圖片割按,在接口外做,降低耦合性静浴。
/**
初始化
@param modelArray 傳入的數(shù)據(jù)模型堰氓,必須遵循 bannerInfo 協(xié)議,至少包含圖片和鏈接
@param position 指出pageControl的位置
@param time 每張圖展示的時間
@param blk 當且僅當圖片有對應url時跳轉到對應網頁
*/
-(void)setParamsWithModel: (NSArray<id<bannerInfo>>*) modelArray
pageCtrlPosition:(PAGE_CTRL_POS)position
timeForEachPage:(NSTimeInterval)time
tapBannerCompleteBlk:(BannerBtnCallback)blk;
Github地址
效果
說明:圖片來源:抓的是奇點app的JSON包用來仿寫苹享。
效果圖
控件
前提:
整個滾動的效果是在一個自定義的UITableViewCell
中實現(xiàn)的双絮。
- Cell中拉入一個
ScrollView
填滿
- 注意,將Bounces都去掉,避免滑動過程的彈性效果
- 去掉水平和豎直方向上的滾動提示囤攀,所以 show H/V indicator也去掉
- 記住要勾選
paging enabled
scrollView設置 - Cell中再拉入一個
UIPageControl
,注意這個pageControl
不是scrollview
的子類软免,且拉入的順序,否則會被蓋在scrollview
底下不顯示:
注意順序 - 控件搭配的實現(xiàn)原理
UIPageControl
的使用目的焚挠,主要是指示當前滑動到的頁數(shù)或杠。整個滑動效果的實現(xiàn),主要是通過UIScrollView
的delegate
宣蔚,在滑動結束的時候改變self.pageconrol.currentpage
的值來實現(xiàn)的。
具體實現(xiàn):
- 通過AFNetworking+SDWebImage 申請到一組網絡圖片认境,存成一個NSArray胚委。這里的實現(xiàn)過程不贅述,可參看另一篇筆記叉信。
- 我們要解決的問題就是當按頁滾動圖片時亩冬,滾動到最左/最右時,再往左/右滾動硼身,是要回到最初/最后一張的硅急。假設我們一共有n張圖片,pagecontrol中肯定要顯示n個點佳遂,但是實際我們scrollView的contentSize寬度只要3倍的寬度就好了营袜。
-
我們假設每張圖片都作為一個按鍵的背景圖,那么其實有如下的設定:
示意圖 - 每一次scrollview滾動結束丑罪,會調用delegate中的函數(shù)
滾動結束后要做的事包括:-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
- 根據(jù)滑動的偏移量荚板,改變 pagecontrol的currentpage
-
重載圖片
將上面截圖中的三個UIView(其實是UIButton),removeFromSuperview,然后根據(jù)self.pagecontrol.currentpage作為下標吩屹,去傳進來的model數(shù)組中找到相應的三個連號跪另。如下圖
說明
-