Skip to content

Latest commit

 

History

History
60 lines (38 loc) · 2.05 KB

基础用法.md

File metadata and controls

60 lines (38 loc) · 2.05 KB

基本用法

以下代码取自项目Example例子工程,更详细完整的代码请打开例子工程查看,下文是其关键代码的讲解。

1.先实例化一个图片浏览器对象。

注意每次打开图片浏览,都应该重新实例化(重新实例化的开销很小,不必担心)。

let lantern = Lantern()

2.实时提供图片总量。

因考虑到数据源有可能是在浏览过程中变化的,所以Lantern框架(以下简称'框架')将会在适当时机调用闭包动态获取当前用户的数据源数量,类似UITableView的机制。

lantern.numberOfItems = {
    self.dataSource.count
}

3.刷新项视图。

框架的项视图(展示单张图片的View)是复用的,由最多3个视图重复使用来实现无限数量的图片浏览。

在每个项视图需要被刷新时,reloadCellAtIndex闭包将会被调用,用户应当在此时更新对应数据源的视图展示。

框架默认实现并使用了LanternImageCell作为项视图,用户也可以自由定制项视图,更多细节在下文介绍。

LanternImageCell有一个imageView视图,用户只需要对其加载图片即可正常使用。

lantern.reloadCellAtIndex = { context in
    let lanternCell = context.cell as? LanternImageCell
    let indexPath = IndexPath(item: context.index, section: indexPath.section)
    lanternCell?.imageView.image = self.dataSource[indexPath.item].localName.flatMap { UIImage(named: $0) }
}

4.指定打开图片浏览器时定位到哪一页。

所赋的值应当在用户数据源的范围内,如数据源共有10项,则pageIndex允许范围是0~9

lantern.pageIndex = indexPath.item

5.显示图片浏览器

浏览器主类Lantern是一个UIViewController,支持导航栏push,也支持模态present。 框架提供的show()方法封装实现了常见的打开方式。

无参调用show()方法的时候,默认使用了present模态打开一个不带导航栏的图片浏览器。

lantern.show()