Swift 2.1 UIViewにクリックイベントとクリック効果を追加

1320 ワード

前言
UIViewはUIButtonがクリックイベントを加えるとクリック効果があるようには見えませんが、体験はかなり悪く、ここではそれぞれカスタマイズと拡張でUIButtonのような効果を実現しています.
本文
一、UIVEewにクリックイベントを追加する

extension UIView {

  func addOnClickListener(target: AnyObject, action: Selector) {
    let gr = UITapGestureRecognizer(target: target, action: action)
    gr.numberOfTapsRequired = 1
    userInteractionEnabled = true
    addGestureRecognizer(gr)
  }

}

        二、UIViewにクリック効果を追加する

class UIViewEffect : UIView {

  override func touchesBegan(touches: Set, withEvent event: UIEvent?) {
    backgroundColor = UIColor.groupTableViewBackgroundColor()
  }

  override func touchesCancelled(touches: Set?, withEvent event: UIEvent?) {
    UIView.animateWithDuration(0.15, animations: { () -> Void in
      self.backgroundColor = UIColor.clearColor()
    })
  }

  override func touchesEnded(touches: Set, withEvent event: UIEvent?) {
    UIView.animateWithDuration(0.15, animations: { () -> Void in
      self.backgroundColor = UIColor.clearColor()
    })
  }
}

 ここでは自分のクリック効果に変えることができ、UIImageViewならクリックで透明度を変更することができます.