InteractiveZoomDriver 1.2.3

InteractiveZoomDriver 1.2.3

shima 维护。



  • 作者
  • Shima

InteractiveZoomDriver

此仓库可以缩放手势。

概览

安装

Carthage

使用 Carthage 安装时,将其添加到您的 Cartfile

github "shima11/InteractiveZoomDriver"

CocoaPods

使用 CocoaPods 安装时,将其添加到您的 Podfile

pod 'InteractiveZoomDriver'

用法

import InteractiveZoomDriver

let zoomView = UIImageView() // UIView or SubClass of UIView
zoomView.isUserInteractionEnabled = true

case1: 驱动程序

向目标UIView添加缩放功能。

gestureTargetView:添加了点击和拖动手势。
sourceView:源视图。
targetViewFactory:缩放期间的变换视图。
shouldZoomTransform:委托外部来判断缩放是否可行。

let driver = InteractiveZoomDriver(
  gestureTargetView: imageView2,
  sourceView: imageView2,
  targetViewFactory: { (fromImageView: UIImageView) -> UIView in
    let view = UIImageView()
    view.image = fromImageView.image
    view.clipsToBounds = fromImageView.clipsToBounds
    view.contentMode = fromImageView.contentMode
    return view
  },
  shouldZoomTransform: {(sourceView: UIImageView) -> Bool in
    if sourceView.image == nil {
      return false
    }
    return true
  }
)

这也没有问题。《InteractiveZoomView.clone》和《InteractiveZoomView.shouldZoomTransform》是协议扩展的默认实现。《InteractiveZoomView》仅对应于《UIImageView》。要支持其他类型,需要在扩展中添加实现。

let driver = InteractiveZoomDriver(
  gestureTargetView: zoomView, 
  sourceView: zoomView, 
  targetViewFactory: InteractiveZoomView.clone, 
  shouldZoomTransform: InteractiveZoomView.shouldZoomTransform
)

case2: 遮罩视图

InteractiveZoomView现在只能支持UIImageView。
如果需要使用自定义UIView,需要创建对InteractiveZoomView的引用并在扩展中进行实现。

let overlayZoomView = InteractiveZoomView(
    sourceView: zoomView
)
view.addSubView(overlayZoomView)