ios開發ui篇—無限輪播(功能完善)
一、自動滾動
新增並設定乙個定時器,每個2.0秒,就跳轉到下一條。
獲取當前正在展示的位置。
1列印檢視:[self addnstimer];2}
34 -(void
)addnstimer
59 -(void
)nextpage
10
實現步驟:
(1)新增並設定定時器
(2)設定定時器的呼叫方法
1)獲取當前正在展示的位置
2)計算出下乙個需要展示的位置
3)通過動畫滾動到下乙個位置
注意點:需要進行判斷。
實現**:
1 - (void定時器的說明:)viewdidload212
13 -(void
)addnstimer
1421 -(void
)nextpage
2234 nsindexpath *nextindexpath=[nsindexpath indexpathforitem:nextitem insection:nextsection];
3536
//3)通過動畫滾動到下乙個位置
37[self.collectinview scrolltoitematindexpath:nextindexpath atscrollposition:uicollectionviewscrollpositionleft animated:yes];
38 }
當使用者在處理其他事情的時候,定時器會停止工作。應該把定時器新增到runloop中,告訴系統在處理其他事情的時候分一部分空間給它。
二、設定頁碼
在storyboard中新增乙個頁碼控制項。
實現**:
1自動滾動,頁碼的實現效果:#pragma mark-懶載入
2 -(nsarray *)news38
return
_news;9}
1011 - (void
)viewdidload
1222
23 -(void
)addnstimer
2431 -(void
)nextpage
3244 nsindexpath *nextindexpath=[nsindexpath indexpathforitem:nextitem insection:nextsection];
4546
//3)通過動畫滾動到下乙個位置
47[self.collectinview scrolltoitematindexpath:nextindexpath atscrollposition:uicollectionviewscrollpositionleft animated:yes];
4849
//4)設定頁碼
50self.pagecontrol.currentpage=nextitem;
51 }
三、完善
說明:監聽collectionview的滾動,當手動觸控collectionview,嘗試拖拽的時候,把定時器停掉,當手指移開的時候,重啟定時器。
完整的實現**:
1//2補充說明:07-無限滾動(迴圈利用)4//
5//6//
7//89
#import
"yyviewcontroller.h"10
#import
"mjextension.h"11
#import
"yynews.h"12
#import
"yycell.h"13
14#define yyidcell @"cell"
15//
注意:這裡需要考慮使用者的手動拖拽
16#define yymaxsections 100
17@inte***ce yyviewcontroller ()18 @property (weak, nonatomic) iboutlet uicollectionview *collectinview;
19 @property(nonatomic,strong)nsarray *news;
20 @property (weak, nonatomic) iboutlet uipagecontrol *pagecontrol;
21 @property(nonatomic,strong)nstimer *timer;
2223
@end
2425
@implementation
yyviewcontroller
2627
#pragma mark-懶載入
28 -(nsarray *)news
2934
return
_news;35}
3637 - (void
)viewdidload
3848
49//
新增定時器
50 -(void
)addnstimer
5157
58//
刪除定時器
59 -(void
)removenstimer
6064
65//
自動滾動
66 -(void
)nextpage
6782 nsindexpath *nextindexpath=[nsindexpath indexpathforitem:nextitem insection:nextsection];
8384
//3通過動畫滾動到下乙個位置
85[self.collectinview scrolltoitematindexpath:nextindexpath atscrollposition:uicollectionviewscrollpositionleft animated:yes];
8687
////
4)設定頁碼
88//
self.pagecontrol.currentpage=nextitem;89}
9091
#pragma mark- uicollectionviewdatasource
92//
一共多少組,預設為1組
93 -(nsinteger)numberofsectionsincollectionview:(uicollectionview *)collectionview
9497 -(nsinteger)collectionview:(uicollectionview *)collectionview numberofitemsinsection:(nsinteger)section
98101
102 -(uicollectionviewcell *)collectionview:(uicollectionview *)collectionview cellforitematindexpath:(nsindexpath *)indexpath
103109
110#pragma mark-uicollectionviewdelegate
111//
當使用者開始拖拽的時候就呼叫
112 -(void)scrollviewwillbegindragging:(uiscrollview *)scrollview
113116
//當使用者停止拖拽的時候呼叫
117 -(void)scrollviewdidenddragging:(uiscrollview *)scrollview willdecelerate:(bool)decelerate
118121
//設定頁碼
122 -(void)scrollviewdidscroll:(uiscrollview *)scrollview
123127
@end
實現瀑布流最理想的做法是繼承uiscrollview,不建議使用多個uitableview的方式實現(這種方式無法實現cell的迴圈利用,且禁止了cell的滾動時間後,整體的tableview需要隨著滾動會出現空白)。
也可以使用collectionview來實現,但使用這種方法需要自定義collectionview的布局(流水布局)
iOS開發UI篇 無限輪播(功能完善)
文頂頂 ios開發ui篇 無限輪播 功能完善 一 自動滾動 新增並設定乙個定時器,每個2.0秒,就跳轉到下一條。獲取當前正在展示的位置。1 self addnstimer 2 34 void addnstimer 59 void nextpage 10列印檢視 實現步驟 1 新增並設定定時器 2 設...
iOS開發UI篇 無限輪播(迴圈展示)
ios開發ui篇 無限輪播 迴圈展示 一 簡單說明 之前的程式還存在乙個問題,那就是不能迴圈展示,因為plist檔案中只有五個陣列,因此第乙個和最後乙個之後就沒有了,下面介紹處理這種迴圈展示問題的小技巧。方法一 使用乙個for迴圈,迴圈200次,建立200 1000個模型,且預設程式啟動後處在第10...
iOS開發UI篇 無限輪播(新聞資料展示)
ios開發ui篇 無限輪播 新聞資料展示 一 實現效果 二 實現步驟 1.前期準備 1 匯入資料轉模型的第三方框架mjextension 2 向專案中新增儲存有 新聞 資料的plist檔案 3 匯入用到的素材 2.步驟和 1 新建乙個資料模型 該模型的 設計如下 yynews.件 1 2 yynew...