欢迎使用 Interactive Image View,这是一个简单库,提供了一种更易于与视图交互的方式,如滚动、缩放和裁剪。其核心支持两种图像内容模式,第一种始终是正方形,第二种是自定义。例如,您可以使用像Instagram一样的比例,比如2:3或9:16,或任何自定义值。它基本上是一个围绕UIKit提供的UIScrollView和UIImageView API的薄包装。
功能
- 在任何地方都可以当作UIView使用,无需呈现或配置ViewController。
- 根据用户需求在当前位置裁剪图像。
- 在2:3或1:1之间切换比例,就像Instagram一样。
- 可以扩展以支持不同的比例。
- 在x和y轴上滚动图像视图。
- 双击来放大或缩小。
- 旋转图像给定的度数。
- 缩放图像视图。
安装
- 添加一个视图,并将视图的类设置为
InteractiveImageView
。 - 在您的视图控制器中,导入InteractiveImageView。
- 连接视图输出,通过
interactiveImageView.configure(...)
配置它 - 设置代理:
interactiveImageView.delegate = self
- 监听代理观察器:
extension ViewController: InteractiveImageViewDelegate { ... }
方法
配置视图
if let image = UIImage(named: "image.png") {
interactiveImageView.configure(withNextContentMode: .heightFill,
withFocusOffset: .center,
withImage: image)
}
无需委托方法裁剪并获取图像
let croppedImage = interactiveImageView.cropAndGetImage()
获取未做任何修改的原始图像。
let originalImage = interactiveImageView.getOriginalImage()
仅在ImageView中设置图像。
interactiveImageView.setImage(UIImage)
切换图像内容模式
interactiveImageView.toggleImageContentMode()
旋转图像
interactiveImageView.rotateImage(UIImage, keepChanges: Bool)
用户手势
双击缩放手势
interactiveImageView.isDoubleTapToZoomAllowed = false
滚动视图
interactiveImageView.isScrollEnabled = false
捏合放大手势
interactiveImageView.isPinchAllowed = false
委托方法
protocol InteractiveImageViewDelegate: AnyObject {
func didCropImage(image: UIImage, fromView: InteractiveImageView)
func didScrollAt(offset: CGPoint, scale: CGFloat, fromView: InteractiveImageView)
func didZoomAt(offset: CGPoint, scale: CGFloat, fromView: InteractiveImageView)
func didFail(_ fail: IIVFailType)
}
示例项目
您可以从项目 InteractiveImageViewExample
中下载并运行。
预览
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 将 InteractiveImageView 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它。
pod 'InteractiveImageView'
Carthage
Carthage 是一个去中心化的依赖管理器,它构建您的依赖并提供二进制框架。要使用 Carthage 将 InteractiveImageView 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它。
github "egzonpllana/InteractiveImageView"
通过 Manifest 文件使用 Swift Package Manager
Swift Package Manager 是自动化 Swift 代码分发的工具,并集成到 swift
编译器中。
一旦您设置了 Swift 包,将 InteractiveImageView 添加为依赖与将其添加到您的 Package.swift
文件的 dependencies
值一样简单。
dependencies: [
.package(url: "https://github.com/egzonpllana/InteractiveImageView.git", .upToNextMajor(from: "1.0.0"))
]
通过 XCode 使用 Swift Package Manager
要将 InteractiveImageView 添加为依赖到您的 Xcode 项目中,请选择文件 > Swift 包 > 添加包依赖并输入仓库 URL。
https://github.com/egzonpllana/InteractiveImageView.git
背景
为什么会有这个项目?在构建一个基于给定宽高比提供交互式图像查看的项目时,我未能找到一个提供以下所有功能且无需viewController即可工作的解决方案,于是我构建了它。
问题或反馈?
欢迎提交问题,或在我@egzonpllana on LinkedIn上联系我。