新四季網

IOS客戶端中幻燈視圖的無限滾動翻頁方法及系統與流程

2023-05-08 11:54:46


本發明涉及IOS客戶端幻燈視圖開發領域,具體涉及一種IOS客戶端中幻燈視圖的無限滾動翻頁方法及系統。



背景技術:

現有的IOS客戶端查閱幻燈視圖時,只能水平或垂直滾動幻燈視圖,以對幻燈視圖進行翻頁,該功能由UIScrollView(蘋果開發工具提供的一個滾動視圖控制項)實現,當滾動幻燈視圖至首尾邊界或超出首尾邊界時,幻燈視圖會回彈至首尾邊界。

隨著用戶的IOS客戶端使用需求的提高,對IOS客戶端提出了無限滾動翻頁幻燈視圖的功能(即從幻燈視圖的首頁滑動至尾頁後,繼續在相同方向上滑動時能夠復位至首頁的幻燈視圖)。

目前,實現無限滾動翻頁幻燈視圖的方法為:採用UIScrollView(滾動視圖控制項)添加若干水平排列的子視圖,例如視圖A、B和C,視圖排列順序為A、B、C,開始用B視圖作為顯示視圖,當向後滑動結束後手動將視圖排列順序調整為B、C、A,再分別計算滑動結束後A、B和C的偏移量,根據偏移量將C視圖移動至屏幕上作為顯示視圖。

但是,上述實現無限滾動翻頁幻燈視圖的方法應用在IOS客戶端時,存在以下缺陷:

(1)每次滑動後,均需要計算每幅子視圖的偏移量,當子視圖的數量較多時,計算大量子視圖的偏移量會佔用IOS客戶端大量的內存,進而降低IOS客戶端的工作效率。

(2)當支持呈現子視圖的數據源發生變化需要重新加載時,會將所有子視圖移除後,重新生成和所需的子視圖、並添加至UIScrollView的視圖層級中去。由於IOS客戶端對視圖層級的操作(主移除/添加子視圖、改變視圖的層級關係等)都是耗時操作,因此當UITableView(IOS客戶端的簡單列表視圖控制項)或UICollectionview(IOS客戶端的容器列表視圖控制項)高頻率的重新加載子視圖(即高頻率的移除/添加子視圖)時,會嚴重影響IOS客戶端的性能,進而降低用戶體驗。



技術實現要素:

針對現有技術中存在的缺陷,本發明解決的技術問題為:在佔用IOS客戶端少量內存的基礎上,實現IOS客戶端中幻燈視圖的無限滾動翻頁。本發明不需要大量創建和移除新的子視圖,顯著減少了不必要的計算和開銷很大的視圖層級操作。

為達到以上目的,本發明提供的IOS客戶端中幻燈視圖的無限滾動翻頁方法,包括以下步驟:

步驟A:通過UIView創建容器視圖,通過UICollectionView創建列表視圖,將列表視圖添加至容器視圖中,轉到步驟B;

步驟B:獲取需要呈現的子視圖的數據源,根據視圖排列順序對所有數據源進行排列,在第一個數據源之前添加與尾部數據源對應的緩衝數據,在最後一個數據源之後添加與首部數據源對應的緩衝數據,將添加緩衝數據後的所有數據源,按照所述排列順序加載至步驟A中的列表視圖中,轉到步驟C;

步驟C:當滾動翻頁至緩衝數據的子視圖時,跳轉至該緩衝數據對應的數據源的子視圖。

在上述方案的基礎上,步驟B中所述第一個數據源之前的緩衝數據為倒數第一個數據源,所述最後一個數據源之後的緩衝數據為正數第一個數據源。

在上述方案的基礎上,步驟B中所述第一個數據源之前的緩衝數據為倒數第一個數據源和倒數第二個數據源,排列順序為:倒數第一個數據源、倒數第二個數據源、第一個數據源;所述最後一個數據源之後的緩衝數據為正數第一個數據源和正數第二個數據源,排列順序為:最後一個數據源、正數第一個數據源、正數第二個數據源。

在上述方案的基礎上,步驟C具體包括以下步驟:設置每個緩衝數據與對應數據源的偏移量;當滾動翻頁至緩衝數據的子視圖時,根據該緩衝數據的偏移量,跳轉至該緩衝數據對應的數據源的子視圖。

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

與現有技術相比,本發明的優點在於:

參見上述步驟B可知,本發明預先所有數據源的開頭和結尾各設置了緩衝數據,與現有技術中無限滾動翻頁時需要計算大量子視圖的偏移量相比,本發明不需要計算每幅子視圖的偏移量,當幻燈視圖滾動翻頁至緩衝數據的子視圖時,能夠直接跳轉至緩衝數據對應的數據源的子視圖,進而利用視覺差來實現無限滾動翻頁。因此,本發明工作時佔用IOS客戶端的內存非常小,進而顯著提高了IOS客戶端的工作效率,提升了用戶體驗。

進一步,參見步驟A和C可知,本發明跳轉至緩衝數據對應的數據源的子視圖時,能夠利用UICollectionView的重用機制,從已有的數據源中直接獲取需跳轉的數據源,進而獲取子視圖,因此不需要大量創建和移除新的子視圖,顯著減少了不必要的計算和開銷很大的視圖層級操作。

進一步,參見步驟B和C可知,本發明跳轉至緩衝數據對應的數據源的子視圖時,在內存上只有存在緩衝數據的額外開銷,不會常駐大量內存,進一步降低了IOS客戶端的內存佔用。

附圖說明

圖1為本發明實施例中IOS客戶端中幻燈視圖的無限滾動翻頁方法的流程圖。

具體實施方式

以下結合附圖及實施例對本發明作進一步詳細說明。

參見圖1所示,本發明實施例中的IOS客戶端中幻燈視圖的無限滾動翻頁方法,包括以下步驟:

S1:通過UIView(視圖控制項)創建容器視圖,轉到S2。

S2:通過UICollectionView創建列表視圖,將列表視圖添加至容器視圖中,轉到S3。

S3:獲取需要呈現的子視圖的數據源(每一個呈現出來的視圖都需要數據來支持,如一張圖片、一個圖片連結等),根據視圖排列順序對所有數據源進行排列,例如需要呈現的子視圖的所有數據源為7張圖片數據,按視圖排列順序編號為1、2、3、4、5、6、7,轉到S4。

S4:在第一個數據源之前添加與尾部數據源對應的緩衝數據,在最後一個數據源之後添加與首部數據源對應的緩衝數據,將添加緩衝數據後的所有數據源,按照S3中的視圖排列順序加載至S2中的列表視圖中,轉到S5。

S4中緩衝數據的添加方式為:一般前後各添加至少1個數據源(通常為正數第一個數據源和倒數第一個數據源)即可,為使滾動翻頁效果更佳平順,本實施例的S4中在前後各添加2個數據源:

第一個數據源之前的緩衝數據為2個,排列順序為:倒數第一個數據源、倒數第二個數據源、第一個數據源;最後一個數據源之後的緩衝數據也為2個,排列順序為:最後一個數據源、正數第一個數據源、正數第二個數據源;即在圖片數據1添加圖片數據6和7,在圖片數據7之後添加圖片數據1和2,添加後的所有數據源為6、7、1、2、3、4、5、6、7、1、2。

S4的原理為:因為UICollectionView在滾動翻頁到最後/開頭之後是無法繼續滾動翻頁的,所以為了使UICollectionView在滾動翻頁到最後/開頭部分之後還可以繼續滾動翻頁,需要其在滾動到最後/開頭之後還有視圖可以顯示。與此同時,UICollectionView顯示視圖的數量是由其數據源決定的,因此可以先在數據源開頭和結尾分別插入緩衝數據,然後在滾動翻頁到緩衝數據時通過設置UICollectionView的偏移量來讓其跳轉至與開頭或結尾的緩衝數據對應的數據源上,進而利用視覺差來實現無限滾動翻頁。

S5:設置每個緩衝數據與對應數據源的偏移量,例如在6、7、1、2、3、4、5、6、7、1、2中,設置第一個6與第二個6的偏移量,轉到S6。

S6:在IOS客戶端的屏幕中,顯示S4中所述的第一個數據源的子視圖,當屏幕中的子視圖被滾動翻頁至緩衝數據的子視圖時,根據該緩衝數據的偏移量,跳轉至該緩衝數據對應的數據源的子視圖。例如在6、7、1、2、3、4、5、6、7、1、2中,當滾動翻頁子視圖到第二個1時,會跳轉至第一個1,進而實現無線滾動翻頁的效果。

S6中跳轉至緩衝數據對應的數據源的子視圖時,能夠利用UICollectionView的重用機制(維護了一個子視圖的重用隊列,當顯示子視圖時優先從重用隊列中去獲取,獲取不到再創建新的子視圖),從已有的數據源中直接獲取需跳轉的數據源,進而獲取子視圖,因此不需要大量創建和移除新的子視圖,顯著減少了不必要的計算和開銷很大的視圖層級操作。

本發明實施例中的IOS客戶端中幻燈視圖的無限滾動翻頁系統,包括容器視圖生成模塊、數據源生成加載模塊、幻燈視圖顯示模塊和無限滾動翻頁模塊。

容器視圖生成模塊用於:通過UIView創建容器視圖,通過UICollectionView創建列表視圖,將列表視圖添加至容器視圖中,向數據源生成加載模塊發送數據源生成加載信號。

數據源生成加載模塊用於:收到數據源生成加載信號後,獲取需要呈現的子視圖的數據源,根據視圖排列順序對所有數據源進行排列,在第一個數據源之前添加與尾部數據源對應的緩衝數據,在最後一個數據源之後添加與首部數據源對應的緩衝數據,將添加緩衝數據後的所有數據源,按照所述排列順序加載至容器視圖生成模塊中的列表視圖中。

數據源生成加載模塊在第一個數據源之前添加的緩衝數據可以為倒數第一個數據源,在最後一個數據源之後添加的緩衝數據可以為正數第一個數據源。

數據源生成加載模塊在第一個數據源之前添加的緩衝數據還可以為倒數第一個數據源和倒數第二個數據源,排列順序為:倒數第一個數據源、倒數第二個數據源、第一個數據源;在最後一個數據源之後添加的緩衝數據還可以為正數第一個數據源和正數第二個數據源,排列順序為:最後一個數據源、正數第一個數據源、正數第二個數據源。

幻燈視圖顯示模塊用於:在IOS客戶端的屏幕中,顯示數據源生成加載模塊中所述的第一個數據源的子視圖。

無限滾動翻頁模塊用於:設置每個緩衝數據與對應數據源的偏移量;當IOS客戶端屏幕中顯示的子視圖被滾動翻頁至緩衝數據的子視圖時,根據該緩衝數據的偏移量,跳轉至該緩衝數據對應的數據源的子視圖。

進一步,本發明不局限於上述實施方式,對於本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發明的保護範圍之內。本說明書中未作詳細描述的內容屬於本領域專業技術人員公知的現有技術。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀