学习UIScreenEdgePanGestureRecognizer手势

最近几天一直搞首页的框架,看了一些轮子,发现和我们的首页不一样。但是却发现UIScreenEdgePanGestureRecognizer这个类,就研究一下。

禁止在TVOS上面使用这个手势

UIScreenEdgePanGestureRecognizer寻找在屏幕边缘附近开始平移(拖动)手势。 在一些情况下,系统使用屏幕边缘手势来启动视图控制器转换。 您可以使用此类为您自己的操作复制相同的手势行为。

看苹果官方文档的意识就是 我们平时使用UINavigationController可以从屏幕的左边移动返回POP到上一个界面的哪一个手势。

在创建屏幕边缘平移手势识别器之后,在将手势识别器附加到视图之前,向edge属性分配适当的值。 您可以使用此属性来指定手势可以从哪些边缘开始。 该手势识别器忽略第一触摸之外的任何触摸。

设置的属性

var edges: UIRectEdge { get set }

手势的可接受的起始边缘。

top: 从上面开始拖动

left: 从左边开始拖动

right: 从右边开始拖动

bottom:从下面开始拖动

all: 可以识别四个方向

您指定的边缘总是相对于应用程序的当前界面方向。 此行为确保手势始终出现在用户界面中的相同位置,而不考虑设备的当前方向。

我们新建一个例子试一下。

添加手势到试图上面

let screenEdgePanGesture = UIScreenEdgePanGestureRecognizer(target: self, action:#selector(ViewController.screenEdgePanGestureClick(gesture:)))
screenEdgePanGesture.edges = UIRectEdge.left
self.view.addGestureRecognizer(screenEdgePanGesture)
func screenEdgePanGestureClick(gesture:UIScreenEdgePanGestureRecognizer)  {
    print("screenEdgePanGestureClick")
}

这样我们从屏幕的边缘从左向右移动就会执行我们的事件了。我们可以根据我们的实际情况设置对应的方向。

Demo下载