美文网首页
Swift UIView的子控件添加点击方法

Swift UIView的子控件添加点击方法

作者: 光光6 | 来源:发表于2021-06-18 23:49 被阅读0次

1.  扩展view,给他的子类控件添加点击方法

extension UIView { 

funcaddTap(_aBlock:@escaping()->()) {

        block= aBlock

        isUserInteractionEnabled = true

        ifletbutton =selfas?UIButton{

            button.addTarget(self, action:#selector(tapAction), for: .touchUpInside)

        }else{

            lettap =UITapGestureRecognizer(target:self, action:#selector(tapAction))

            addGestureRecognizer(tap)

        }

    }

    @objc private func tapAction() {

        block?()

    }

}

2. 属性

获取父控制器

extension UIView {

     public var parentViewController: UIViewController? {

        weakvarparentResponder:UIResponder? =self

        whileparentResponder!=nil{

            parentResponder = parentResponder!.next

            ifletviewController = parentResponderas?UIViewController{

                returnviewController

            }

        }

        returnnil

    }

}

size

extension UIView {

     public var size: CGSize {

        get {

            return frame.size

        }

        set {

            width = newValue.width

            height = newValue.height

        }

    }

}

height

extension UIView {

     public var height: CGFloat {

        get {

            return frame.size.height

        }

        set {

            frame.size.height = newValue

        }

    }

}

width

extension UIView {

     public var width: CGFloat {

        get {

            return frame.size.width

        }

        set {

            frame.size.width = newValue

        }

    }

}

x

extension UIView {

     public var x: CGFloat {

        get {

            return frame.origin.x

        }

        set {

            frame.origin.x = newValue

        }

    }

}

y

extension UIView {

     public var y: CGFloat {

        get {

            return frame.origin.y

        }

        set {

            frame.origin.y = newValue

        }

    }

}

方法

第一响应者

extension UIView {

     public func firstResponder() -> UIView? {

        var views = [UIView](arrayLiteral: self)

        var i = 0

        repeat {

            let view = views[i]

            if view.isFirstResponder {

                return view

            }

            views.append(contentsOf: view.subviews)

            i += 1

        } while i < views.count

        return nil

    }

}

添加多个子视图

extension UIView {

   public func addSubviews(_ subviews: [UIView]) {

       subviews.forEach({ self.addSubview($0) })

   }

   public func removeSubviews() {

       subviews.forEach({ $0.removeFromSuperview() })

   }

}

备注:整理项目中常用到的一些技术,以后经常会记录和完善,部分来源网络

相关文章

网友评论

      本文标题:Swift UIView的子控件添加点击方法

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