我试图重新创建在iOS 11中看到的音量栏:
我尝试通过创建一个黑色(略微)透明的UIView,然后添加一个白色子视图来做到这一点。通过UIPanGestureRecognizer
我试图给它实现我想要的功能,尽管我想限制这种运动:
现在第一件事很容易弄清楚,但是现在我需要限制它,以便它不能比父UIView更高或更低
到目前为止,这是我的代码:
let gesture = UIPanGestureRecognizer(target: self, action: #selector(self.barWasDragged))
self.volumeBar.addGestureRecognizer(gesture)
@objc func barWasDragged(gesture: UIPanGestureRecognizer) {
switch gesture.state {
case .began, .ended:
viewCenter = self.volumeBar.center
case .changed:
let translation = gesture.translation(in: self)
self.volumeBar.center.y = viewCenter!.y + translation.y
default: break
}
}
但是现在,抑制它的最佳方法是什么,我可以设置UIPanGestureRecognizer
的界限吗?
感谢。
- 编辑
只是澄清一下,
背景中的黑条是我的volumeView
,de white(可拖动)栏是volumeBar
答案 0 :(得分:0)
只要您知道volumeBar
的框架,就可以执行此类操作
@objc func barWasDragged(gesture: UIPanGestureRecognizer) {
switch gesture.state {
case .began, .ended:
viewCenter = self.volumeBar.center
case .changed:
let translation = gesture.translation(in: self)
let newYValue = viewCenter.y + translation.y
if newYValue > volumeBar.frame.origin.y && newYValue < (volumeBar.frame.origin.y+volumeBar.frame.size.height) {
self.volumeBar.center.y = newYValue
}
default: break
}
}