利用三塊空間無限循環(huán)滾動視圖<UIScrollView>隨筆


? ? ? 在我們學習滾動視圖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文件


Resource 下的Property List


命名


打開文件



將圖片寫入文件內(nèi)

這個文件默認是一個字典類型的,<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é)議:


簽協(xié)議



設(shè)置代理人
添加三個圖片控件
添加分頁控件

pageControl的視圖寬高是由圖片數(shù)量決定的,這么寫可以動態(tài)改變pageControl的寬高.


添加信息描述控件


設(shè)置默認顯示圖片

三張圖片最左邊一張為倒數(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)滾動.(向左滾動同理)





最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容