? ? ? 在我們學習滾動視圖UIScrollView中,我們學習了循環(huán)滾動.原理就是n張圖片循環(huán)滾動就放n + 2張圖片,第一個圖片的位置放最后一張圖片,最后一個圖片的位置放第一張圖片.當滾動到第一張或者最后一張圖片挺下的瞬間,將偏移量改變成相應(yīng)得偏移量.讓用戶體驗到無限循環(huán)圖片.
? ? ? 但是這種方法在圖片資源非常多的時候,UIScrollView 的對象就會開辟很大一塊空間,但是可以看到的圖片就只有一個屏幕大小,其他的圖片都在空間中存在著,這樣非常浪費系統(tǒng)資源.
? ? ?那么我就來介紹一下,如何用三塊圖片的空間無限循環(huán)滾動視圖.
? ? ?我們在ARC模式下編程:
? ? ?首先,我們先將屏幕的寬高,以及ImageView的數(shù)量設(shè)成宏定義,方便接下來使用.
接下來我們定義一些接下來將要使用的屬性,都是在.m文件中的私有屬性.
我們將代碼寫在lodeView中,程序是先走lodeView的,寫在這里程序運行速度會快上一點,根據(jù)個人喜好.(注意不要忘記[super lodeView])
這里我們要創(chuàng)建一個后綴名為 .plist的imageInfo文件. 用來方便以后增加圖片. 我們本次用10張圖片演示.
文件創(chuàng)建步驟如下,
1.將圖片導入工程.
這里要勾選這三個選項,這樣素材就會復制一份到你的工程中,就不怕傳給別人時沒有圖片了.
2.新建imageInfo文件
這個文件默認是一個字典類型的,<key></key>中放key值,<string></string>中放value,一一對應(yīng).(注意 圖片名字已經(jīng)被改成0,1,2....9.JPG ?圖片名字不要打錯, value將會是圖片上label中的文字)
NSString *path = [[NSBundle mainBundle] pathForResource:@"imageInfo" ofType:@"plist"];
讀取程序包路徑中的資源文件
因為 self.imageData = [NSMutableDictionary dictionaryWithContentsOfFile:path]; 中imageData是字典類型的變量
他可以用文件初始化.
因為接下來我們需要用到滾動停止事件,所以需要簽協(xié)議:
pageControl的視圖寬高是由圖片數(shù)量決定的,這么寫可以動態(tài)改變pageControl的寬高.
三張圖片最左邊一張為倒數(shù)第一張圖片,中間為第一張圖片,右邊為第二張圖片.
currentImageIndex初始值設(shè)為0,正好和pageControl的currentPage一一對應(yīng).
將pageControl的初始位置設(shè)為第一個小點.
當圖片滾動停止的時候改變小點位置, 并且將圖片信息賦值.
reload 是自己寫的方法.可以實現(xiàn)循環(huán)滾動.
更新各個位置圖片.
currentImageIndex為當前圖片下標.
以1.JPG 2.JPG 3.JPG為例,當向右滑動時,當前圖片的下標由2變成(2 + 1) % 10 = 3, 將中間圖片替換, 左圖片下標為(3 + 10 - 1) % 10 = 2, 右圖片下標為(3 + 1) % 10 = 4;將相應(yīng)位置圖片替換,形成循環(huán)滾動.(向左滾動同理)