欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

IOS客戶端中幻燈視圖的無限滾動(dòng)翻頁(yè)方法及系統(tǒng)與流程

文檔序號(hào):11154390閱讀:361來源:國(guó)知局
IOS客戶端中幻燈視圖的無限滾動(dòng)翻頁(yè)方法及系統(tǒng)與制造工藝

本發(fā)明涉及IOS客戶端幻燈視圖開發(fā)領(lǐng)域,具體涉及一種IOS客戶端中幻燈視圖的無限滾動(dòng)翻頁(yè)方法及系統(tǒng)。



背景技術(shù):

現(xiàn)有的IOS客戶端查閱幻燈視圖時(shí),只能水平或垂直滾動(dòng)幻燈視圖,以對(duì)幻燈視圖進(jìn)行翻頁(yè),該功能由UIScrollView(蘋果開發(fā)工具提供的一個(gè)滾動(dòng)視圖控件)實(shí)現(xiàn),當(dāng)滾動(dòng)幻燈視圖至首尾邊界或超出首尾邊界時(shí),幻燈視圖會(huì)回彈至首尾邊界。

隨著用戶的IOS客戶端使用需求的提高,對(duì)IOS客戶端提出了無限滾動(dòng)翻頁(yè)幻燈視圖的功能(即從幻燈視圖的首頁(yè)滑動(dòng)至尾頁(yè)后,繼續(xù)在相同方向上滑動(dòng)時(shí)能夠復(fù)位至首頁(yè)的幻燈視圖)。

目前,實(shí)現(xiàn)無限滾動(dòng)翻頁(yè)幻燈視圖的方法為:采用UIScrollView(滾動(dòng)視圖控件)添加若干水平排列的子視圖,例如視圖A、B和C,視圖排列順序?yàn)锳、B、C,開始用B視圖作為顯示視圖,當(dāng)向后滑動(dòng)結(jié)束后手動(dòng)將視圖排列順序調(diào)整為B、C、A,再分別計(jì)算滑動(dòng)結(jié)束后A、B和C的偏移量,根據(jù)偏移量將C視圖移動(dòng)至屏幕上作為顯示視圖。

但是,上述實(shí)現(xiàn)無限滾動(dòng)翻頁(yè)幻燈視圖的方法應(yīng)用在IOS客戶端時(shí),存在以下缺陷:

(1)每次滑動(dòng)后,均需要計(jì)算每幅子視圖的偏移量,當(dāng)子視圖的數(shù)量較多時(shí),計(jì)算大量子視圖的偏移量會(huì)占用IOS客戶端大量的內(nèi)存,進(jìn)而降低IOS客戶端的工作效率。

(2)當(dāng)支持呈現(xiàn)子視圖的數(shù)據(jù)源發(fā)生變化需要重新加載時(shí),會(huì)將所有子視圖移除后,重新生成和所需的子視圖、并添加至UIScrollView的視圖層級(jí)中去。由于IOS客戶端對(duì)視圖層級(jí)的操作(主移除/添加子視圖、改變視圖的層級(jí)關(guān)系等)都是耗時(shí)操作,因此當(dāng)UITableView(IOS客戶端的簡(jiǎn)單列表視圖控件)或UICollectionview(IOS客戶端的容器列表視圖控件)高頻率的重新加載子視圖(即高頻率的移除/添加子視圖)時(shí),會(huì)嚴(yán)重影響IOS客戶端的性能,進(jìn)而降低用戶體驗(yàn)。



技術(shù)實(shí)現(xiàn)要素:

針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明解決的技術(shù)問題為:在占用IOS客戶端少量?jī)?nèi)存的基礎(chǔ)上,實(shí)現(xiàn)IOS客戶端中幻燈視圖的無限滾動(dòng)翻頁(yè)。本發(fā)明不需要大量創(chuàng)建和移除新的子視圖,顯著減少了不必要的計(jì)算和開銷很大的視圖層級(jí)操作。

為達(dá)到以上目的,本發(fā)明提供的IOS客戶端中幻燈視圖的無限滾動(dòng)翻頁(yè)方法,包括以下步驟:

步驟A:通過UIView創(chuàng)建容器視圖,通過UICollectionView創(chuàng)建列表視圖,將列表視圖添加至容器視圖中,轉(zhuǎn)到步驟B;

步驟B:獲取需要呈現(xiàn)的子視圖的數(shù)據(jù)源,根據(jù)視圖排列順序?qū)λ袛?shù)據(jù)源進(jìn)行排列,在第一個(gè)數(shù)據(jù)源之前添加與尾部數(shù)據(jù)源對(duì)應(yīng)的緩沖數(shù)據(jù),在最后一個(gè)數(shù)據(jù)源之后添加與首部數(shù)據(jù)源對(duì)應(yīng)的緩沖數(shù)據(jù),將添加緩沖數(shù)據(jù)后的所有數(shù)據(jù)源,按照所述排列順序加載至步驟A中的列表視圖中,轉(zhuǎn)到步驟C;

步驟C:當(dāng)滾動(dòng)翻頁(yè)至緩沖數(shù)據(jù)的子視圖時(shí),跳轉(zhuǎn)至該緩沖數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源的子視圖。

在上述方案的基礎(chǔ)上,步驟B中所述第一個(gè)數(shù)據(jù)源之前的緩沖數(shù)據(jù)為倒數(shù)第一個(gè)數(shù)據(jù)源,所述最后一個(gè)數(shù)據(jù)源之后的緩沖數(shù)據(jù)為正數(shù)第一個(gè)數(shù)據(jù)源。

在上述方案的基礎(chǔ)上,步驟B中所述第一個(gè)數(shù)據(jù)源之前的緩沖數(shù)據(jù)為倒數(shù)第一個(gè)數(shù)據(jù)源和倒數(shù)第二個(gè)數(shù)據(jù)源,排列順序?yàn)椋旱箶?shù)第一個(gè)數(shù)據(jù)源、倒數(shù)第二個(gè)數(shù)據(jù)源、第一個(gè)數(shù)據(jù)源;所述最后一個(gè)數(shù)據(jù)源之后的緩沖數(shù)據(jù)為正數(shù)第一個(gè)數(shù)據(jù)源和正數(shù)第二個(gè)數(shù)據(jù)源,排列順序?yàn)椋鹤詈笠粋€(gè)數(shù)據(jù)源、正數(shù)第一個(gè)數(shù)據(jù)源、正數(shù)第二個(gè)數(shù)據(jù)源。

在上述方案的基礎(chǔ)上,步驟C具體包括以下步驟:設(shè)置每個(gè)緩沖數(shù)據(jù)與對(duì)應(yīng)數(shù)據(jù)源的偏移量;當(dāng)滾動(dòng)翻頁(yè)至緩沖數(shù)據(jù)的子視圖時(shí),根據(jù)該緩沖數(shù)據(jù)的偏移量,跳轉(zhuǎn)至該緩沖數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源的子視圖。

在上述方案的基礎(chǔ)上,步驟C之前還包括以下步驟:在IOS客戶端的屏幕中,顯示步驟B中所述的第一個(gè)數(shù)據(jù)源的子視圖。

與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:

參見上述步驟B可知,本發(fā)明預(yù)先所有數(shù)據(jù)源的開頭和結(jié)尾各設(shè)置了緩沖數(shù)據(jù),與現(xiàn)有技術(shù)中無限滾動(dòng)翻頁(yè)時(shí)需要計(jì)算大量子視圖的偏移量相比,本發(fā)明不需要計(jì)算每幅子視圖的偏移量,當(dāng)幻燈視圖滾動(dòng)翻頁(yè)至緩沖數(shù)據(jù)的子視圖時(shí),能夠直接跳轉(zhuǎn)至緩沖數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源的子視圖,進(jìn)而利用視覺差來實(shí)現(xiàn)無限滾動(dòng)翻頁(yè)。因此,本發(fā)明工作時(shí)占用IOS客戶端的內(nèi)存非常小,進(jìn)而顯著提高了IOS客戶端的工作效率,提升了用戶體驗(yàn)。

進(jìn)一步,參見步驟A和C可知,本發(fā)明跳轉(zhuǎn)至緩沖數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源的子視圖時(shí),能夠利用UICollectionView的重用機(jī)制,從已有的數(shù)據(jù)源中直接獲取需跳轉(zhuǎn)的數(shù)據(jù)源,進(jìn)而獲取子視圖,因此不需要大量創(chuàng)建和移除新的子視圖,顯著減少了不必要的計(jì)算和開銷很大的視圖層級(jí)操作。

進(jìn)一步,參見步驟B和C可知,本發(fā)明跳轉(zhuǎn)至緩沖數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源的子視圖時(shí),在內(nèi)存上只有存在緩沖數(shù)據(jù)的額外開銷,不會(huì)常駐大量?jī)?nèi)存,進(jìn)一步降低了IOS客戶端的內(nèi)存占用。

附圖說明

圖1為本發(fā)明實(shí)施例中IOS客戶端中幻燈視圖的無限滾動(dòng)翻頁(yè)方法的流程圖。

具體實(shí)施方式

以下結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。

參見圖1所示,本發(fā)明實(shí)施例中的IOS客戶端中幻燈視圖的無限滾動(dòng)翻頁(yè)方法,包括以下步驟:

S1:通過UIView(視圖控件)創(chuàng)建容器視圖,轉(zhuǎn)到S2。

S2:通過UICollectionView創(chuàng)建列表視圖,將列表視圖添加至容器視圖中,轉(zhuǎn)到S3。

S3:獲取需要呈現(xiàn)的子視圖的數(shù)據(jù)源(每一個(gè)呈現(xiàn)出來的視圖都需要數(shù)據(jù)來支持,如一張圖片、一個(gè)圖片鏈接等),根據(jù)視圖排列順序?qū)λ袛?shù)據(jù)源進(jìn)行排列,例如需要呈現(xiàn)的子視圖的所有數(shù)據(jù)源為7張圖片數(shù)據(jù),按視圖排列順序編號(hào)為1、2、3、4、5、6、7,轉(zhuǎn)到S4。

S4:在第一個(gè)數(shù)據(jù)源之前添加與尾部數(shù)據(jù)源對(duì)應(yīng)的緩沖數(shù)據(jù),在最后一個(gè)數(shù)據(jù)源之后添加與首部數(shù)據(jù)源對(duì)應(yīng)的緩沖數(shù)據(jù),將添加緩沖數(shù)據(jù)后的所有數(shù)據(jù)源,按照S3中的視圖排列順序加載至S2中的列表視圖中,轉(zhuǎn)到S5。

S4中緩沖數(shù)據(jù)的添加方式為:一般前后各添加至少1個(gè)數(shù)據(jù)源(通常為正數(shù)第一個(gè)數(shù)據(jù)源和倒數(shù)第一個(gè)數(shù)據(jù)源)即可,為使?jié)L動(dòng)翻頁(yè)效果更佳平順,本實(shí)施例的S4中在前后各添加2個(gè)數(shù)據(jù)源:

第一個(gè)數(shù)據(jù)源之前的緩沖數(shù)據(jù)為2個(gè),排列順序?yàn)椋旱箶?shù)第一個(gè)數(shù)據(jù)源、倒數(shù)第二個(gè)數(shù)據(jù)源、第一個(gè)數(shù)據(jù)源;最后一個(gè)數(shù)據(jù)源之后的緩沖數(shù)據(jù)也為2個(gè),排列順序?yàn)椋鹤詈笠粋€(gè)數(shù)據(jù)源、正數(shù)第一個(gè)數(shù)據(jù)源、正數(shù)第二個(gè)數(shù)據(jù)源;即在圖片數(shù)據(jù)1添加圖片數(shù)據(jù)6和7,在圖片數(shù)據(jù)7之后添加圖片數(shù)據(jù)1和2,添加后的所有數(shù)據(jù)源為6、7、1、2、3、4、5、6、7、1、2。

S4的原理為:因?yàn)閁ICollectionView在滾動(dòng)翻頁(yè)到最后/開頭之后是無法繼續(xù)滾動(dòng)翻頁(yè)的,所以為了使UICollectionView在滾動(dòng)翻頁(yè)到最后/開頭部分之后還可以繼續(xù)滾動(dòng)翻頁(yè),需要其在滾動(dòng)到最后/開頭之后還有視圖可以顯示。與此同時(shí),UICollectionView顯示視圖的數(shù)量是由其數(shù)據(jù)源決定的,因此可以先在數(shù)據(jù)源開頭和結(jié)尾分別插入緩沖數(shù)據(jù),然后在滾動(dòng)翻頁(yè)到緩沖數(shù)據(jù)時(shí)通過設(shè)置UICollectionView的偏移量來讓其跳轉(zhuǎn)至與開頭或結(jié)尾的緩沖數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源上,進(jìn)而利用視覺差來實(shí)現(xiàn)無限滾動(dòng)翻頁(yè)。

S5:設(shè)置每個(gè)緩沖數(shù)據(jù)與對(duì)應(yīng)數(shù)據(jù)源的偏移量,例如在6、7、1、2、3、4、5、6、7、1、2中,設(shè)置第一個(gè)6與第二個(gè)6的偏移量,轉(zhuǎn)到S6。

S6:在IOS客戶端的屏幕中,顯示S4中所述的第一個(gè)數(shù)據(jù)源的子視圖,當(dāng)屏幕中的子視圖被滾動(dòng)翻頁(yè)至緩沖數(shù)據(jù)的子視圖時(shí),根據(jù)該緩沖數(shù)據(jù)的偏移量,跳轉(zhuǎn)至該緩沖數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源的子視圖。例如在6、7、1、2、3、4、5、6、7、1、2中,當(dāng)滾動(dòng)翻頁(yè)子視圖到第二個(gè)1時(shí),會(huì)跳轉(zhuǎn)至第一個(gè)1,進(jìn)而實(shí)現(xiàn)無線滾動(dòng)翻頁(yè)的效果。

S6中跳轉(zhuǎn)至緩沖數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源的子視圖時(shí),能夠利用UICollectionView的重用機(jī)制(維護(hù)了一個(gè)子視圖的重用隊(duì)列,當(dāng)顯示子視圖時(shí)優(yōu)先從重用隊(duì)列中去獲取,獲取不到再創(chuàng)建新的子視圖),從已有的數(shù)據(jù)源中直接獲取需跳轉(zhuǎn)的數(shù)據(jù)源,進(jìn)而獲取子視圖,因此不需要大量創(chuàng)建和移除新的子視圖,顯著減少了不必要的計(jì)算和開銷很大的視圖層級(jí)操作。

本發(fā)明實(shí)施例中的IOS客戶端中幻燈視圖的無限滾動(dòng)翻頁(yè)系統(tǒng),包括容器視圖生成模塊、數(shù)據(jù)源生成加載模塊、幻燈視圖顯示模塊和無限滾動(dòng)翻頁(yè)模塊。

容器視圖生成模塊用于:通過UIView創(chuàng)建容器視圖,通過UICollectionView創(chuàng)建列表視圖,將列表視圖添加至容器視圖中,向數(shù)據(jù)源生成加載模塊發(fā)送數(shù)據(jù)源生成加載信號(hào)。

數(shù)據(jù)源生成加載模塊用于:收到數(shù)據(jù)源生成加載信號(hào)后,獲取需要呈現(xiàn)的子視圖的數(shù)據(jù)源,根據(jù)視圖排列順序?qū)λ袛?shù)據(jù)源進(jìn)行排列,在第一個(gè)數(shù)據(jù)源之前添加與尾部數(shù)據(jù)源對(duì)應(yīng)的緩沖數(shù)據(jù),在最后一個(gè)數(shù)據(jù)源之后添加與首部數(shù)據(jù)源對(duì)應(yīng)的緩沖數(shù)據(jù),將添加緩沖數(shù)據(jù)后的所有數(shù)據(jù)源,按照所述排列順序加載至容器視圖生成模塊中的列表視圖中。

數(shù)據(jù)源生成加載模塊在第一個(gè)數(shù)據(jù)源之前添加的緩沖數(shù)據(jù)可以為倒數(shù)第一個(gè)數(shù)據(jù)源,在最后一個(gè)數(shù)據(jù)源之后添加的緩沖數(shù)據(jù)可以為正數(shù)第一個(gè)數(shù)據(jù)源。

數(shù)據(jù)源生成加載模塊在第一個(gè)數(shù)據(jù)源之前添加的緩沖數(shù)據(jù)還可以為倒數(shù)第一個(gè)數(shù)據(jù)源和倒數(shù)第二個(gè)數(shù)據(jù)源,排列順序?yàn)椋旱箶?shù)第一個(gè)數(shù)據(jù)源、倒數(shù)第二個(gè)數(shù)據(jù)源、第一個(gè)數(shù)據(jù)源;在最后一個(gè)數(shù)據(jù)源之后添加的緩沖數(shù)據(jù)還可以為正數(shù)第一個(gè)數(shù)據(jù)源和正數(shù)第二個(gè)數(shù)據(jù)源,排列順序?yàn)椋鹤詈笠粋€(gè)數(shù)據(jù)源、正數(shù)第一個(gè)數(shù)據(jù)源、正數(shù)第二個(gè)數(shù)據(jù)源。

幻燈視圖顯示模塊用于:在IOS客戶端的屏幕中,顯示數(shù)據(jù)源生成加載模塊中所述的第一個(gè)數(shù)據(jù)源的子視圖。

無限滾動(dòng)翻頁(yè)模塊用于:設(shè)置每個(gè)緩沖數(shù)據(jù)與對(duì)應(yīng)數(shù)據(jù)源的偏移量;當(dāng)IOS客戶端屏幕中顯示的子視圖被滾動(dòng)翻頁(yè)至緩沖數(shù)據(jù)的子視圖時(shí),根據(jù)該緩沖數(shù)據(jù)的偏移量,跳轉(zhuǎn)至該緩沖數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源的子視圖。

進(jìn)一步,本發(fā)明不局限于上述實(shí)施方式,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
都昌县| 乳山市| 临沧市| 淳化县| 屯昌县| 亚东县| 芮城县| 阜城县| 湘阴县| 广德县| 左权县| 东方市| 宜兰县| 武胜县| 西和县| 济阳县| 锦屏县| 昌图县| 射洪县| 融水| 离岛区| 茶陵县| 叶城县| 北川| 庆元县| 辽源市| 通化市| 蚌埠市| 株洲县| 和林格尔县| 涿鹿县| 德安县| 湖南省| 禄丰县| 吉木萨尔县| 宽城| 峡江县| 文成县| 东光县| 荣昌县| 芒康县|