P9ViewDragger
开发者可以使用 P9ViewDragger轻松实现视图拖拽功能。
安装
您可以从我们的发布页面下载最新的框架文件。P9ViewDragger 也可通过 CocoaPods 实现。要安装它,只需将以下行添加到您的 Podfile 中。pod 'P9ViewDragger'
运行
对于拖动、旋转和缩放,您只需将一个视图设置为 P9ViewDragger。
P9ViewDragger.default().trackingView(someView, parameters: nil, ready: nil, trackingHandler: nil, completion: nil)
这样就可以进行拖动、旋转和缩放 sameView 了。
P9ViewDragger 默认处理视图的拖动、旋转和缩放。但是,例如,如果您只想允许视图进行拖动,可以通过传递带有锁定标志的参数来实现。
P9ViewDragger.default().trackingView(someView, parameters: [P9ViewDraggerLockRotateKey:true, P9ViewDraggerLockScaleKey:true], ready: nil, trackingHandler: nil, completion: nil)
以下是可以使用的保留参数。
参数键 | 值类型 | 描述 |
---|---|---|
P9ViewDraggerLockTranslateKey | 布尔值 | 禁用平移 |
P9ViewDraggerLockScaleKey | 布尔值 | 禁用缩放 |
P9ViewDraggerLockRotateKey | 布尔值 | 禁用旋转 |
P9ViewDraggerSnapshotImageKey | UIImage | 在拖动时提供诱饵图像 |
P9ViewDraggerDecoyViewKey | UIView | 在拖动时提供诱饵视图 |
P9ViewDraggerRemainDecoyViewOnStageKey | 布尔值 | 在拖动后不删除诱饵视图 |
P9ViewDraggerStartWhenTouchDownKey | 布尔值 | 触摸时开始跟踪 |
您可以通过传递处理块代码,将业务代码放置在每个事件点,例如拖动准备、拖动和拖动完成。以下是示例,在开始拖动时更改视图的透明度值,在拖动时仅允许沿y轴移动,在拖动完成后更改视图的透明度值。
P9ViewDragger.default().trackingView(someView, parameters: nil, ready: { [weak self] (trackingView:UIView?) in
guard let `self` = self else {
return
}
self.someView.alpha = 0.2
}, trackingHandler: { [weak self] (trackingView:UIView?) in
guard let _ = self, let trackingView = trackingView else {
return
}
var transform = trackingView.transform
transform.tx = 0
trackingView.transform = transform
}) { [weak self] (trackingView:UIView?) in
guard let `self` = self else {
return
}
self.someView.alpha = 1.0
}
当进行拖动动画时,P9ViewDragger使用给定的视图。如果您想在没有任何变化的给定视图中保持不变,并想在动画时使用另一个视图或图像,则请使用诱饵函数。P9ViewDragger在给定阶段视图中创建诱饵视图。因此,在使用诱饵函数之前,您需要确定阶段视图。如果您已设置默认阶段视图,则可以通过传递nil给阶段视图参数,然后P9ViewDragger将使用默认阶段视图。
P9ViewDragger.default().trackingDecoyView(someView, stageView: stageView, parameters: nil, ready: { [weak self] (trackingView:UIView?) in
guard let `self` = self else {
return
}
self.someView.alpha = 0.2
}, trackingHandler: nil) { [weak self] (trackingView:UIView?) in
guard let `self` = self, let trackingView = trackingView else {
return
}
self.someView.alpha = 1.0
self.someView.transform = trackingView.transform
}
许可证
适用于情况的MIT许可证。 http://en.wikipedia.org/wiki/MIT_License