iOS輪子 下拉重新整理,上拉載入更多

2021-09-11 12:32:54 字數 2354 閱讀 1779

herefresh完成什麼樣的工作?

herefresh是乙個類簇。它維護著乙個狀態機,能過通過監聽uiscrollviewcontentoffset屬性確定當前pulltorefresh元件應該切換到什麼狀態(說的簡單,實現時考慮的東西還是挺多的)。然後根據具體狀態對ui進行相應操作(通過呼叫herefreshviewfunc refresh(_ refresh:herefresh,statechangedto state:herefreshstate)進行ui的修改)。

//狀態

public enum herefreshstate: equatable, customstringconvertible

//initial: 初始化操作。 例如調整contentinsert 從而隱藏 header(有動畫);新增動畫(動畫進度可通過手勢進行控制);

//pulling(progress: float) : 下/上拉進度(0~1)你可以根據process值進行一些控制,例如動畫執行的offset。 在process<1時鬆手,狀態切換到initial, process>1時鬆手狀態切換到loading。

//loading : 正在載入狀態,此時不會響應下/上拉操作了,知道載入結束。

//finished: 當前切換到此狀態時,refreshview並不會隱藏。在此狀態時可以執行一些結束動畫,結束動畫執行結束後你再去將狀態改為initial,此時refreshview會隱藏起來。這樣子定製更加靈活。結束動畫需要在herefreshview的 func refresh(_ refresh:herefresh,statechangedto state:herefreshstate)中進行定製。

複製**

你需要做什麼?

1, 建立乙個繼承自herefreshview的類, 並根據狀態修改ui或執行動畫。

class herefreshview: uiview,herefreshdelegate 

}protocol herefreshdelegate:nsobjectprotocol

class herefreshdefaultheaderview: herefreshview

}複製**

2,建立refreshview,指定refreshview的size。 建立 herefreshheader或者herefreshfooter物件(herefreshheader用於下拉重新整理,herefreshfooter用於上拉載入更多)。

let frame = cgrect(x: 0, y: 0, width: uiscreen.main.bounds.width, height: 40)

let defaultheaderview = herefreshheaderview(frame: frame)

複製**

3, 將herefreshheader新增到scrollview 上

self.tableview.addrefreshheader(pulltomakesoupheader) 

複製**

header-pulltomakesoup

創意來自pulltorefresh。 我在demo中演示了如何使用herefresh來實現這個效果。動畫的實現原理參考這裡。

header-default

self.tableview.adddefaultheader 

}複製**

footer-default
self.tableview.adddefaultfooter 

}複製**

通過配置屬性實現不同的行為:

1, canautoloadmore

///自動載入更多。

///false: 上拉一定距離,鬆手後才會進行載入

///true: 當scrollview滑動到底部時就自動呼叫action塊(預設值)

var canautoloadmore = true

複製**

2, beforddistance

var beforddistance:cgfloat = 0

複製**

3, ishiddenwhennomoredata

///沒有更多資料時,是否隱藏refreshview。

var ishiddenwhennomoredata = false

複製**

//不隱藏

iOS 下拉重新整理和上拉載入更多

1.匯入第三方類庫jh refresh標頭檔案 import jhrefresh.h 2.寫乙個重新整理的方法 呼叫jh refresh類庫中兩個方法 addrefreshheaderviewwithaniviewclass 新增頭部重新整理 addrefreshfooterviewwithaniv...

Taro下拉重新整理,上拉載入更多

1 引入外掛程式 import taro,from tarojs taro import from tarojs components import from taro ui import index.scss 2 render render aaaaaaaa 3 方法 constructor pr...

IOS開發之下拉重新整理和上拉載入更多

1 uirefreshcontrol 2 egotableviewrefresh 3 ah3dpullrefresh 4 mjrefresh 5 自己實現 1.匯入ah3dpullrefresh工程檔案 2.在工程targets build phases compile sources 搜尋uisc...