uiscrollview 的無限滾動主要應用在輪播器、歡迎介面等場景。首先需要說明的是,文字所講的是一種"笨辦法",但是好理解且容易實現,在不多的時候用它也無妨。它的原理是在要顯示的前後各加一張即在第一張之前放最後一張,在最後一張之後放第一張,然後在滾動到邊緣的時候,巧妙的過渡一下就可以"瞞天過海","以假亂真"的造成無限滾動的假象。網路上有很多只用三張或兩張實現的方法,效率比這個方法高,但實現起來稍微麻煩一點,有興趣的可以去深入研究。
實現步驟
1、根據需求準備幾張,在網上找了5張,分別命名為 img_01,img_02,img_03,img_04,img_05 。
2、**實現,主要分為:新增uiscrollview,新增顯示,新增uipagecontrol,然後監聽uiscrollview的滾動,根據滾動的位置來設定uipagecontrol,最重要的是對於滾動到兩個邊緣時要特殊處理一下,**如下:
#import "viewcontroller.h"
//螢幕寬度
#define screen_width [uiscreen mainscreen].bounds.size.width
//高度
#define img_height 180
//要顯示的總數
#define max_size 7
#import "viewcontroller.h"
@inte***ce viewcontroller () //滾動檢視
@property (strong, nonatomic) uiscrollview *loopscrollview;
//指示器
@property (strong, nonatomic) uipagecontrol *pageindicator;
//要展示的陣列
@property(strong, nonatomic) nsmutablearray *imgarray;
@end
@implementation viewcontroller
//懶載入陣列
/** * 建立uiscrollview並設定其屬性
*/-(void)setupscrollview
//設定uiscrollview的屬性
sc.contentsize = cgsizemake(screen_width * self.imgarray.count, img_height);
sc.showshorizontalscrollindicator = no;
sc.pagingenabled = yes;
//剛開始應該滾動到第二張顯示,因為第一張其實是最後一張
[sc setcontentoffset:cgpointmake(screen_width, 0) animated:no];
//設定**並新增到當前view中
sc.delegate = self;
[self.view addsubview:sc];
self.loopscrollview = sc;
}/**
* 建立uipagecontrol並設定其屬性
*/-(void)setuppagecontrol
//uiscrollview的**方法,在該方法中改變uipagecontrol並且處理邊緣滾動
-(void)scrollviewdidenddecelerating:(uiscrollview *)scrollview
//2、如果是最後一張
else if(currentpage == max_size - 1)
}@end
實現效果
無限輪播.gif
寫在後面的話
其實實現輪播現在最好的方案應該是使用uicollectionview,因為它是利用重用機制來實現的,效能會好很多,**寫起來類似。後面有機會的話奉獻一下實現方案~~~
iOS開發學習44 使用UIScrollView
import viewcontroller.h inte ce viewcontroller end implementation viewcontroller void viewdidload void didreceivememorywarning end注意點 uiscrollview使用步驟...
iphone常用控制項之UIScrollView
h檔案 inte ce viewcontroller uiviewcontroller m檔案 void viewdidload 響應縮放方法 uiview viewforzoominginscrollview uiscrollview scrollview 方法 在檢視滾動時接到通知,包括乙個指向...
iOS開發之歸檔
歸檔是一種物件都可以實現的更加常規的序列化方式。適用對模型物件進行歸檔的技術可以輕鬆將複雜物件寫入檔案和從檔案中進行讀取。大多數支援儲存資料的foundation和cocos touch類都遵循nscoding協議 不過有些例外,例如uiiamge 因此對於大多數系統提供的類而言,歸檔比較輕鬆。如果...