ZoomImageView
@MainActor
open class ZoomImageView : UIView, UIScrollViewDelegate, UIGestureRecognizerDelegate支持缩放查看静态图片、live photo、视频的控件
默认显示完整图片或视频,可双击查看放大后的大小,再次双击恢复到初始大小。 支持通过修改 contentMode 来控制静态图片和 live photo 默认的显示模式,目前仅支持 UIViewContentModeCenter、UIViewContentModeScaleAspectFill、UIViewContentModeScaleAspectFit、UIViewContentModeScaleToFill(仅宽度拉伸),默认为 UIViewContentModeScaleAspectFit。注意这里的显示模式是基于 viewportRect 而言的而非整个 zoomImageView。 ZoomImageView 提供最基础的图片预览和缩放功能,其他功能请通过继承来实现。
- 
                  
                  代理 DeclarationSwift @MainActor open weak var delegate: ZoomImageViewDelegate?
- 
                  
                  比如常见的上传头像预览界面中间有一个用于裁剪的方框,则 viewportRect 必须被设置为这个方框在 zoomImageView 坐标系内的 frame,否则拖拽图片或视频时无法正确限制它们的显示范围 图片或视频的初始位置会位于 viewportRect 正中间, 如果想要图片覆盖整个 viewportRect,将 contentMode 设置为 UIViewContentModeScaleAspectFill 即可。 如果设置为 CGRectZero 则表示使用默认值,默认值为和整个 zoomImageView 一样大 DeclarationSwift @MainActor open var viewportRect: CGRect
- 
                  
                  最大缩放比率,默认0根据contentMode自动计算 DeclarationSwift @MainActor open var maximumZoomScale: CGFloat { get set }
- 
                  
                  最小缩率比率,默认0根据contentMode自动计算 DeclarationSwift @MainActor open var minimumZoomScale: CGFloat { get set }
- 
                  
                  自定义最大缩放比率句柄,默认nil时根据contentMode自动计算 DeclarationSwift @MainActor open var maximumZoomScaleBlock: ((_ scaleX: CGFloat, _ scaleY: CGFloat) -> CGFloat)?
- 
                  
                  最定义最小缩放比率句柄,默认nil时根据contentMode自动计算 DeclarationSwift @MainActor open var minimumZoomScaleBlock: ((_ scaleX: CGFloat, _ scaleY: CGFloat) -> CGFloat)?
- 
                  
                  自定义双击放大比率句柄,默认nil时直接放大到最大比率 DeclarationSwift @MainActor open var zoomInScaleBlock: ((UIScrollView) -> CGFloat)?
- 
                  
                  重用标识符 DeclarationSwift @MainActor open var reusedIdentifier: String?
- 
                  
                  设置当前要显示的图片,会把 livePhoto/video 相关内容清空,因此注意不要直接通过 imageView.image 来设置图片。 DeclarationSwift @MainActor open weak var image: UIImage? { get set }
- 
                  
                  设置当前要显示的 Live Photo,会把 image/video 相关内容清空,因此注意不要直接通过 livePhotoView.livePhoto 来设置 DeclarationSwift @MainActor open weak var livePhoto: PHLivePhoto? { get set }
- 
                  
                  设置当前要显示的 video ,会把 image/livePhoto 相关内容清空,因此注意不要直接通过 videoPlayerLayer 来设置 DeclarationSwift @MainActor open weak var videoPlayerItem: AVPlayerItem? { get set }
- 
                  
                  获取当前正在显示的图片/视频的容器 DeclarationSwift @MainActor open weak var contentView: UIView? { get }
- 
                  
                  获取当前正在显示的图片/视频在整个 ZoomImageView 坐标系里的 rect(会按照当前的缩放状态来计算) DeclarationSwift @MainActor open var contentViewRect: CGRect { get }
- 
                  
                  是否播放video时显示底部的工具栏,默认NO DeclarationSwift @MainActor open var showsVideoToolbar: Bool
- 
                  
                  视频底部控制条的 margins,会在此基础上自动叠加安全区域,默认值为 {0, 16, 16, 8} DeclarationSwift @MainActor open var videoToolbarMargins: UIEdgeInsets { get set }
- 
                  
                  可通过此属性修改 video 播放时屏幕中央的播放按钮图片 DeclarationSwift @MainActor open var videoPlayButtonImage: UIImage? { get set }
- 
                  
                  是否显示播放 video 时屏幕左上角的关闭按钮,默认NO,仅播放视频时生效 DeclarationSwift @MainActor open var showsVideoCloseButton: Bool
- 
                  
                  可通过此属性修改 video 播放时屏幕左上角的关闭按钮图片 DeclarationSwift @MainActor open var videoCloseButtonImage: UIImage? { get set }
- 
                  
                  播放 video 时屏幕左上角的关闭按钮中心句柄,默认同导航栏关闭按钮 DeclarationSwift @MainActor open var videoCloseButtonCenter: (() -> CGPoint)? { get set }
- 
                  
                  是否隐藏进度视图,默认NO DeclarationSwift @MainActor open var hidesProgressView: Bool
- 
                  
                  设置当前进度,自动显示或隐藏进度视图 DeclarationSwift @MainActor open var progress: CGFloat { get set }
- 
                  
                  是否正在播放视频 DeclarationSwift @MainActor open var isPlayingVideo: Bool { get }
- 
                  
                  是否忽略本地图片缓存,默认NO DeclarationSwift @MainActor open var ignoreImageCache: Bool
- 
                  
                  滚动视图 DeclarationSwift @MainActor open lazy var scrollView: UIScrollView { get set }
- 
                  
                  用于显示图片的 UIImageView,注意不要通过 imageView.image 来设置图片,请使用 image 属性。 DeclarationSwift @MainActor open var imageView: UIImageView { get }
- 
                  
                  用于显示 Live Photo 的 view,仅在 iOS 9.1 及以后才有效 DeclarationSwift @MainActor open var livePhotoView: PHLivePhotoView { get }
- 
                  
                  用于显示 video 的 layer DeclarationSwift @MainActor open var videoPlayerLayer: AVPlayerLayer { get }
- 
                  
                  播放 video 时底部的工具栏,你可通过此属性来拿到并修改上面的播放/暂停按钮、进度条、Label 等的样式,默认paddings为{10, 10, 10, 10} DeclarationSwift @MainActor open var videoToolbar: ZoomImageVideoToolbar { get }
- 
                  
                  播放 video 时屏幕中央的播放按钮 DeclarationSwift @MainActor open var videoPlayButton: UIButton { get }
- 
                  
                  播放 video 时屏幕左上角的关闭按钮,默认自动关闭所在present控制器 DeclarationSwift @MainActor open var videoCloseButton: UIButton { get }
- 
                  
                  进度视图,居中显示 DeclarationSwift @MainActor open lazy var progressView: UIView & ProgressViewPlugin { get set }
- 
                  
                  Undocumented DeclarationSwift @MainActor override open var frame: CGRect { get set }
- 
                  
                  Undocumented DeclarationSwift @MainActor override open var contentMode: UIView.ContentMode { get set }
- 
                  
                  Undocumented DeclarationSwift @MainActor override public init(frame: CGRect)
- 
                  
                  Undocumented DeclarationSwift @MainActor public required init?(coder: NSCoder)
- 
                  
                  Undocumented DeclarationSwift @MainActor override open func didMoveToWindow()
- 
                  
                  Undocumented DeclarationSwift @MainActor override open func layoutSubviews()
- 
                  
                  开始视频播放 DeclarationSwift @MainActor open func playVideo()
- 
                  
                  暂停视频播放 DeclarationSwift @MainActor open func pauseVideo()
- 
                  
                  停止视频播放,将播放状态重置到初始状态 DeclarationSwift @MainActor open func endPlayingVideo()
- 
                  
                  重置图片或视频的大小,使用的场景例如:相册控件里放大当前图片、划到下一张、再回来,当前的图片或视频应该恢复到原来大小。注意子类重写需要调一下super DeclarationSwift @MainActor open func revertZooming()
- 
                  
                  快速设置图片URL,支持占位图和完成回调,参数支持UIImage|PHLivePhoto|AVPlayerItem|NSURL|NSString类型 使用视频缓存生成AVPlayerItem示例: let resourceLoader = PlayerCacheLoaderManager() let asset = resourceLoader.urlAsset(with: videoURL) let playerItem = AVPlayerItem(asset: asset)DeclarationSwift @MainActor open func setImageURL(_ aImageURL: Any?, placeholderImage aPlaceholderImage: UIImage? = nil, completion: (@MainActor @Sendable (UIImage?) -> Void)? = nil)
- 
                  
                  Undocumented DeclarationSwift @MainActor open func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool
- 
                  
                  Undocumented DeclarationSwift @MainActor open func viewForZooming(in scrollView: UIScrollView) -> UIView?
- 
                  
                  Undocumented DeclarationSwift @MainActor open func scrollViewDidZoom(_ scrollView: UIScrollView)
 View on GitHub
View on GitHub