Preheat
Automates prefetching of content in UITableView and UICollectionView
Install / Use
/learn @kean/PreheatREADME
Automates preheating (prefetching) of content in UITableView and UICollectionView.
Deprecated on iOS 10. This library is similar to
UITableViewDataSourcePrefetchingandUICollectionViewDataSourcePrefetchingadded in iOS 10 which I would recommend to use instead.
One way to use Preheat is to improve user experience in applications that display collections of images. Preheat allows you to detect which cells are soon going to appear on the display, and prefetch images for those cells. You can use Preheat with any image loading library, including Nuke which it was designed for.
The idea of automating preheating was inspired by Apple’s Photos framework example app.
Getting Started
- See Image Preheating Guide
- Check out example project for Nuke
Usage
Here is an example of how you might implement preheating in your application using Preheat and Nuke:
import Preheat
import Nuke
class PreheatDemoViewController: UICollectionViewController {
let preheater = Nuke.Preheater()
var controller: Preheat.Controller<UICollectionView>?
override func viewDidLoad() {
super.viewDidLoad()
controller = Preheat.Controller(view: collectionView!)
controller?.handler = { [weak self] addedIndexPaths, removedIndexPaths in
self?.preheat(added: addedIndexPaths, removed: removedIndexPaths)
}
}
func preheat(added: [IndexPath], removed: [IndexPath]) {
func requests(for indexPaths: [IndexPath]) -> [Request] {
return indexPaths.map {
var request = Request(url: photos[$0.row])
request.priority = .low
return request
}
}
preheater.startPreheating(with: requests(for: added))
preheater.stopPreheating(with: requests(for: removed))
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
controller?.enabled = true
}
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
// When you disable preheat controller it removes all preheating
// index paths and calls its handler
controller?.enabled = false
}
}
Requirements
- iOS 8.0 / tvOS 9.0
- Xcode 9
- Swift 4
Installation<a name="installation"></a>
CocoaPods
To install Preheat add a dependency to your Podfile:
# source 'https://github.com/CocoaPods/Specs.git'
# use_frameworks!
# platform :ios, "8.0"
pod "Preheat"
Carthage
To install Preheat add a dependency to your Cartfile:
github "kean/Preheat"
Import
Import installed modules in your source files
import Preheat
License
Preheat is available under the MIT license. See the LICENSE file for more info.
Related Skills
qqbot-channel
349.7kQQ 频道管理技能。查询频道列表、子频道、成员、发帖、公告、日程等操作。使用 qqbot_channel_api 工具代理 QQ 开放平台 HTTP 接口,自动处理 Token 鉴权。当用户需要查看频道、管理子频道、查询成员、发布帖子/公告/日程时使用。
docs-writer
100.4k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
349.7kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
Design
Campus Second-Hand Trading Platform \- General Design Document (v5.0 \- React Architecture \- Complete Final Version)1\. System Overall Design 1.1. Project Overview This project aims t
