轻按

时间:2018-10-22 11:59:10

标签: swift uitapgesturerecognizer

我在UIViews中有5个不同的View Controller,并且我想通过更改其边框颜色仅突出显示被点击的最后一个。

我制作了一个Custom Highlighting Class,它封装了设计方面的预期效果,并给每个UIView一个UITapGestureRecognizer及其#selector(toggleFunction)。这5个UIViews已经有一个类分配给他们,因此基本上我需要将Original Class更改为Custom Class,或者根据需要将其打开/关闭。

我的问题是,当我在5个UIViews之间点击时,如何打开和关闭此自定义类?

1 个答案:

答案 0 :(得分:1)

您可以尝试

extension UIView {

    func addBorder(_ add:Bool) {

        self.layer.borderColor = add ? UIColor.red.cgColor : UIColor.green.cgColor

        self.layer.borderWidth = add ? 5 : 0

    }
}

@objc func tapped(_ v:UITapGestureRecognizer) {

   let currentView = v.view!

   allViews.forEach {

      $0.addBorder($0 == currentView)
   }

}

假设您有

var allViews = [UIView]()