當前位置:首頁 » 文件管理 » ios緩存池

ios緩存池

發布時間: 2023-03-26 22:46:58

Ⅰ iOS自己動手實現tableview可重用機制

tableview的實現原理:
1.給view添加重用Id要用的時候就從重用緩存池裡找可以重用的view如果沒有就創建一個添加到緩存池中
2.把屏幕外不可見的view去掉放進可重用池中
本文就是簡單實現這個可重用功能,創建一個單個view為屏幕大小,只雀嘩需要2個view就可以無限滑動的小demo

首先需要寫一個一個dataSourse的協議供外部使用

只是簡單的實現可重用功能,所以不需要動態添加view,數量鎮汪和大小都寫死了,這個set就相當於緩存池,這里用array也可頃旅行以,但是由於查找可重用view是隨機存取不需要順序存儲所以沒必要用array,判斷和決定一個view是否可重用需要一個標志,這里就用view自帶的tag來處理了,當tag為1時代表可重用(當前不顯示在界面上),為0為不可重用(已顯示在界面上)

之後需要在初始化後就添加一個view,這里創建了一個first標簽用來判斷是不是初始化,因為layoutsubviews不只會調用一次,而且我嘗試的時候發現是手指移動距離等於屏幕寬度的時候正好會調用一次(一開始沒注意這個問題被坑了好久)

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
//獲取每次調用該方法相對上次調用時的手指偏移量
let offset = (touches.first?.previousLocation(in: self).x)! - (touches.first?.location(in: self).x)!
//記錄當前屏幕左邊到原點的距離
contentOffset += offset

熱點內容
美嘉演算法口訣 發布:2025-05-16 06:03:15 瀏覽:952
c程序編譯連接 發布:2025-05-16 06:02:36 瀏覽:964
腳本魔獸 發布:2025-05-16 06:01:52 瀏覽:330
文件夾python 發布:2025-05-16 06:01:43 瀏覽:627
電腦我的世界伺服器游戲幣 發布:2025-05-16 05:27:25 瀏覽:487
索尼手機為什麼不能用安卓10 發布:2025-05-16 05:18:46 瀏覽:784
蔚來es6選擇哪些配置實用 發布:2025-05-16 05:18:05 瀏覽:130
小米如何掃碼wifi密碼 發布:2025-05-16 05:13:38 瀏覽:807
樓層密碼是什麼意思 發布:2025-05-16 05:13:37 瀏覽:13
創建文件夾失敗 發布:2025-05-16 05:12:59 瀏覽:396