WEImageViewer
描述
目录
示例
要运行示例项目,首先克隆仓库,然后从 Example 目录中运行 pod install
。
安装
- 通过 CocoaPods 安装 WEImageViewer,请通过 CocoaPods。要安装,只需将以下行添加到您的 Podfile 中。
pod 'WEImageViewer'
Supported Versions
- iOS 10.0 或更高版本
使用方法
UIImageView
imageView.enableViewer(true, presentViewController: self.navigationController)
// Or
imageView.enableViewer(true) // Viewer will be presented by UIApplication.share.keyWindows.rootViewController
// Or
let imageBrowser = WEImageViewController()
imageBrowser.show(self.navigationController, senderView: imageView)
UITableViewController, UICollectionViewController
步骤 1. 将查看器声明为属性
let imageViewer = WEImageViewController()
步骤 2. 在表格视图代理方法 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
中,为单元格的图像视图设置图像查看器控制器
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! DemoCollectionViewCell
// Configure the cell
cell.coverImageView.imageViewerController = imageViewer
cell.coverImageView.enableViewer(true)
return cell
}
步骤 3. 采纳 WEImageViewerDataSource 和 WEImageViewerDelegate
func numberOfImageInViewer() -> Int {
return objects.count
}
func imageViewAtIndex(_ imageViewer: WEImageViewController, index: Int) -> UIImageView? {
let indexPath = IndexPath(row: index, section: 0)
if let cell = tableView.cellForRow(at: indexPath) {
return cell.contentView.viewWithTag(101) as? UIImageView
}
return nil
}
func frameInWindowForItemAtIndex(_ imageViewer: WEImageViewController, index: Int) -> CGRect {
let indexPath = IndexPath(row: index, section: 0)
let rect = tableView.rectForRow(at: indexPath)
return tableView.convert(rect, to: nil)
}
// Scroll to the cell has an image will be showing on viewer to make sure the dismissal animation will work correctly when user close viewer
func imageViewer(_ imageViewer: WEImageViewController, willShowAt index: Int) {
//This is my sample code, you can do some more to make it better
let indexPath = IndexPath(row: index, section: 0)
if let visibleIndexes = tableView.indexPathsForVisibleRows, !visibleIndexes.contains(indexPath) {
tableView.scrollToRow(at: indexPath, at: .middle, animated: false)
}
}
属性
绘制属性 | 值 | 描述 |
---|---|---|
imagesDataSource |
WEImageViewerDataSource | 数据源为图像查看器控制器对象提供构建和修改查看器所需的信息。 |
delegate |
WEImageViewerDelegate | 代表必须采用 WEImageViewerDelegate 协议。协议的某些可选方法允许代表在查看器控制器中管理一些操作。 |
rootViewController |
UIViewController | 此控制器将呈现图像查看器控制器。如果 rootViewController 为 nil,查看器将通过 keyWindow 呈现。 |
selectedIndex |
Int | 查看器中当前显示的图像的索引。 |
公共接口
WEImageViewerDataSource
func numberOfImageInViewer() -> Int
func imageViewAtIndex(_ imageViewer: WEImageViewController, index: Int) -> UIImageView?
func frameInWindowForItemAtIndex(_ imageViewer: WEImageViewController, index: Int) -> CGRect
optional func imageURLAtIndex(_ imageViewer: WEImageViewController, index: Int) -> URL?
WEImageViewerDelegate
optional func imageViewer(_ imageViewer: WEImageViewController , willShowAt index: Int)
联系方式
您可以通过电子邮件地址 [email protected] 联系我。如果您在项目中发现任何问题,请创建一个工单。同时也欢迎提交拉取请求。
授权协议
由 GiangVT(又名 Werfe)开发,并以 MIT 协议发布。关于更多详细信息,请参阅 LICENSE
文件。
在我的示例项目中,背景图像来自 ilikewallpaper 和 Pinterest。谢谢。