我如何单击全屏UIView后面的按钮?

问题描述 投票:0回答:2

我想在我的页面(UIViewController)中显示渐变效果。因此,我在最后一层添加了带有渐变背景颜色属性的UIView。但是添加此UIView后,我无法单击按钮(当然)。我怎么解决这个问题?我必须显示带有渐变效果的页面。渐变效果层必须在页面上方(顶部)。

import UIKit

class ViewController: UIViewController {

    lazy var contentViewOutlet : UIView =
        {
            let myUiView = UIView()
            return myUiView
    }()

    lazy var myButton : UIButton =
        {
            let mybutton = UIButton()
            mybutton.setTitle("i want to be clicked :)", for: .normal)
            mybutton.backgroundColor = .green
            return mybutton
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(myButton)
        myButton.translatesAutoresizingMaskIntoConstraints = false

        myButton.topAnchor.constraint(equalTo: view.topAnchor, constant: 50).isActive = true
        myButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        myButton.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.2).isActive = true
        myButton.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.2).isActive = true
        myButton.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)

        view.addSubview(contentViewOutlet)
        contentViewOutlet.translatesAutoresizingMaskIntoConstraints = false
        contentViewOutlet.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
        contentViewOutlet.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
        contentViewOutlet.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        contentViewOutlet.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
        contentViewOutlet.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true

        let gradientLayer = CAGradientLayer()
        gradientLayer.frame = self.view.bounds
        gradientLayer.colors = [UIColor.white.cgColor, UIColor.yellow.cgColor]
        contentViewOutlet.layer.insertSublayer(gradientLayer, at: 0)
        contentViewOutlet.alpha = 0.8
        view.layoutIfNeeded()

    }

    @objc func buttonAction(sender: UIButton!) {
        print("Button tapped")
    }
}
ios swift uiview cagradientlayer
2个回答
0
投票

使用

class TransView:UIView { 
    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        return false
    } 
}

然后

lazy var contentViewOutlet : TransView = {
    let myUiView = TransView()
    return myUiView
}()

0
投票

您可以尝试以下方法:

yourView.bringSubViewToFront(yourButton)

希望有帮助...

© www.soinside.com 2019 - 2024. All rights reserved.