SwiftUI 高级List分页与无限滚动之高级版(2020教程)

在《SwiftUI 高级List分页与无限滚动之基础版(2020教程)》中我们介绍了List分页的基础实现方法,但是这种方法没有站在用户的角度思考,下面我们以用户为中心制作分页。

下面,我们将研究一下如何通过阈值控制获取下一页时间。

RandomAccessCollection+isThresholdItem

这次,我们将从extentions的RandomAccessCollection开始。这次,我们将实现一个名为isThresholdItem的函数,该函数确定给定item是否为阈值item。

extension RandomAccessCollection where Self.Element: Identifiable {
    func isThresholdItem(offset: Int,
                                             item: Item) -> Bool {
        guard !isEmpty else {
            return false
        }
        
        guard let itemIndex = firstIndex(where: { AnyHashable($0.id) == AnyHashable(item.id) }) else {
            return false
        }
        
        let distance = self.distance(from: itemIndex, to: endIndex)
        let offset = offset < count ? offset : count - 1
        return offset == (distance - 1)

你可能感兴趣的:(SwiftUI源码大全)