ImageSlideshow 1.9.2

ImageSlideshow 1.9.2

测试已测试
Lang语言 SwiftSwift
许可 MIT
Released上次发布2020年12月
SPM支持 SPM

Petr Zvonicek 维护。




🖼ImageSlideshow

可定制的 Swift 图像幻灯片,具有循环滚动、计时器和全屏查看器

Build Status Version Carthage Compatible License Platform

📱示例

要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install

🔧安装

CocoaPods

ImageSlideshow 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行即可

pod 'ImageSlideshow', '~> 1.9.0'

Carthage

要使用 Carthage 将 ImageSlideshow 集成到您的 Xcode 项目中,请在 Cartfile 中指定它

github "zvonicek/ImageSlideshow" ~> 1.9.0

Carthage 不包含外部提供程序的 InputSources(因为这些提供程序的依赖关系)因此您需要从 ImageSlideshow/Classes/InputSources 手动获取您需要的。

手动

一种可能性是从发布页面下载构建好的框架(ImageSlideshow.framework.zip),并在您的目标项目(在Linked Frameworks and Libraries中)中链接它。然而,由于Swift开发速度很快,这目前存在一些问题——框架是为单一Swift版本构建的,可能不支持之前的/未来的版本。

Alternatively,也可以将整个ImageSlideshow目录整个复制到您的项目中。请确保删除您不需要的外部输入源。

关于Swift 2.3、Swift 3和Swift 4的支持说明

1.4版本支持Swift 4。Swift 3从版本1.0开始支持,对于Swift 2.2和Swift 2.3兼容的代码,请使用版本0.6或分支swift-2.3

🔨如何使用

将ImageSlideshow视图添加到视图层次结构中,您可以在Interface Builder中或通过代码实现。

图片加载

使用ImageSlideshow实例上的setImageInputs方法设置图片,该方法接收一个InputSource数组。默认情况下,您可以使用ImageSource,它接受UIImage或其它几种流行的网络库InputSource。您也可以通过实现InputSource协议来创建自己的输入源。

InputSource名称 Pod
AlamofireImage AlamofireSource pod "ImageSlideshow/Alamofire"
AFNetworking AFURLSource pod "ImageSlideshow/AFURL"
SDWebImage SDWebImageSource pod "ImageSlideshow/SDWebImage"
Kingfisher KingfisherSource pod "ImageSlideshow/Kingfisher"
Parse ParseSource pod "ImageSlideshow/Parse"
slideshow.setImageInputs([
  ImageSource(image: UIImage(named: "myImage"))!,
  ImageSource(image: UIImage(named: "myImage2"))!,
  AlamofireSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080"),
  KingfisherSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080"),
  ParseSource(file: PFFile(name:"image.jpg", data:data))
])

配置

通过以下属性可以配置行为

  • slideshowInterval - 以秒为单位的幻灯片间隔时间(默认0 – 禁用)
  • zoomEnabled - 启用缩放(默认false
  • circular - 启用循环滚动(默认true
  • activityIndicator - 允许设置自定义活动指示器,请参阅“活动指示器”部分
  • pageIndicator - 允许设置自定义页面指示器,请参阅“页面指示器”部分;将nil赋值以隐藏页面指示器
  • pageIndicatorPosition - 配置页面指示器的位置
  • contentScaleMode - 配置缩放(默认ScaleAspectFit
  • draggingEnabled - 启用拖拽(默认true
  • currentPageChanged - 在页面更改时调用的闭包
  • willBeginDragging - 在scrollViewWillBeginDragging时调用的闭包
  • didEndDecelerating - 在scrollViewDidEndDecelerating时调用的闭包
  • preload - 图像预加载配置(默认all预加载,也可用fixed

页面指示器

可以通过在 ImageSlideshow 上使用 pageIndicator 属性来自定义页面指示器。默认情况下,使用的是一个简单的 UIPageControl。如果需要,也可以自定义页面控制。

let pageIndicator = UIPageControl()
pageIndicator.currentPageIndicatorTintColor = UIColor.lightGray
pageIndicator.pageIndicatorTintColor = UIColor.black
slideshow.pageIndicator = pageIndicator

同时,提供了一个简单的标签页面指示器,以 "5/21"(第二十一页的第五页)的形式显示页码。

slideshow.pageIndicator = LabelPageIndicator()

您还可以通过采用 PageIndicatorView 协议来实现自己的页面指示器。

可以通过将 PageIndicatorPosition 值分配给 ImageSlideshow 上的 pageIndicatorPosition 属性来配置页面指示器的位置。您可以分别指定水平和垂直定位。

水平 定位选项有:.left(padding: Int).center.right(padding: Int)

垂直 定位选项有:.top.bottom.undercustomTop(padding: Int)customBottom(padding: Int)customUnder(padding: Int)

示例

slideshow.pageIndicatorPosition = PageIndicatorPosition(horizontal: .left(padding: 20), vertical: .bottom)

活动指示器

默认情况下,活动指示器不被显示,但您可以通过将 DefaultActivityIndicator 实例设置到 Image Slideshow 中来启用它

slideshow.activityIndicator = DefaultActivityIndicator()

您还可以自定义指示器样式和颜色

slideshow.activityIndicator = DefaultActivityIndicator(style: .white, color: nil)

此外,还有一个使用您自己的活动指示器的选项。您只需实现 ActivityIndicatorViewActivityIndicatorFactory 协议即可。有关更多信息,请参阅 ActivityIndicatorView.swift

全屏视图

您还可以使用附带的 FullScreenSlideshowViewController 来打开全屏图像视图。最简单的方法是调用

override func viewDidLoad() {
  let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.didTap))
  slideshow.addGestureRecognizer(gestureRecognizer)
}

func didTap() {
  slideshow.presentFullScreenController(from: self)
}

如果需要更高级的行为,您可以手动实例化和配置 FullScreenSlideshowViewController

👤作者

Petr Zvoníček

📄许可

ImageSlideshow 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。

👀参考

受以下项目启发