美文网首页学习中的Swift链式编程程序员
NiceGesture:现在你可以舒服的使用UIGesture了

NiceGesture:现在你可以舒服的使用UIGesture了

作者: 没故事的卓同学 | 来源:发表于2016-04-07 23:29 被阅读1270次

    我一直觉得iOS中的UIGesture使用起来非常别扭,在github上搜了一圈也没有顺手的,于是我就自己撸了一个:NiceGesture

    使用

    TapGesture:

    因为tap手势只有一种状态,所以这个手势的处理只需要调用<code>whenTapped</code>方法:

      view.nc_whenTapped {(tapGestureRecognizer) -> () in
            //doSomething()
      }
    
    

    如果你需要配置tapGestureRecognizer,就先调用<code>nc_addTapGestureWithConfigClosure</code>方法,在这个参数闭包里配置,接着继续调用<code>whenTapped</code>方法:

    
      view.nc_addTapGestureWithConfigClosure { (tapGestureRecognizer) -> () in
                // Configure gesture recognizer,like this:
                tapGestureRecognizer.numberOfTapsRequired=2
            }.whenTapped {(tapGestureRecognizer) -> () in
                //doSomething()
            }
    

    其他手势:

    如果你需要配置这些手势,如上面tap的处理方法,调用<code>nc_addxxxxGestureWithConfigClosure</code>方法:

    
      view.nc_addxxxxGestureWithConfigClosure({ (gestureRecognizer) -> () in
            //Configure gesture recognizer
      })
    
    

    如果不需要配置,直接调用add方法就可以:

    
      view.nc_addxxxxGesture()
    
    

    接着,重点来了,在添加完手势后,支持链式编程,可以连续处理几种不同的状态,避免了代码嵌套的问题,代码看起来也会更整洁。

    
       view.nc_addPanGesture()
           .whenBegan { (gestureRecognizer) -> Void in
                
           }.whenCancelled { (gestureRecognizer) -> Void in
                
           }.whenChanged { (gestureRecognizer) -> Void in
                
           }.whenEnded { (gestureRecognizer) -> Void in
                
           }.whenFailed { (gestureRecognizer) -> Void in
                
           }
    
    

    好吧,有的时候你会想用一个闭包同时处理几种状态,那么你就使用<code> whenStatesHappend </code>方法,参数是一个手势识别state的数组:

    
    lbState.nc_addPanGesture().whenStatesHappend([.Ended,.Changed]) { (gestureRecognizer) -> Void in
                
            }
    
    

    安装

    支持pod

    在pod file中输入以下:

    platform :ios, '8.0'
    use_frameworks!
    
    pod 'NiceGesture'
    

    Carthage

    近期会支持,请稍候。

    联系我

    欢迎提建议,可以直接提issue,或者微博上联系我也行:@没故事的卓同学
    谢谢支持。

    相关文章

      网友评论

      本文标题:NiceGesture:现在你可以舒服的使用UIGesture了

      本文链接:https://www.haomeiwen.com/subject/hvhvlttx.html