iOS開發UI篇 無限輪播(功能完善)

2021-09-06 17:24:21 字數 4380 閱讀 9166

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...