透明视图是黑色的?

Kev*_*lia 1 uikit ios swift

我正在尝试创建在某些位置透明的视图以查看后面的图像。但是,由于某种原因,在视图的透明部分中,我看到的是黑色,而不是视图的后面。我已经将其精简为很少的代码,并且不明白为什么我的透明视图显示的是黑色而不是红色(后面的视图的颜色)。这是我的代码:

class ViewController: UIViewController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        let redView = UIView(frame: view.frame)
        redView.backgroundColor = UIColor.red
        let transparentView = TransparentView(frame: view.frame)

        view.addSubview(redView)
        view.addSubview(transparentView)
    }
}
Run Code Online (Sandbox Code Playgroud)

class TransparentView: UIView {

    override func draw(_ rect: CGRect) {
        UIColor.clear.setFill()
        UIRectFill(rect)
}
Run Code Online (Sandbox Code Playgroud)

我希望屏幕显示为全红,但显示为全黑。在有人说清楚视图变得容易得多之前,我实际上是在尝试在drawRect中做更复杂的事情,只是深入到最基本的事情来尝试调试我的问题。我在这里想念什么?

Bra*_*don 6

使用self.isOpaque = false;以使视图/层透明即使当drawRect被覆盖。

class TransparentView: UIView {

    override init(frame: CGRect) {
        super.init(frame: frame);

        self.isOpaque = false;  //Use this..
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func draw(_ rect: CGRect) {
        UIColor.clear.setFill()
        UIRectFill(rect)
    }
}
Run Code Online (Sandbox Code Playgroud)