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)