SubView已添加到View,但未显示

时间:2019-09-02 13:25:04

标签: swift addsubview

我正在尝试显示已添加到视图的子视图,但是当按下按钮时它不会显示。

我尝试将isOpaque设置为1,将alpha设置为1,将isHidden设置为false(无需按按钮),并检查了我是否运行了view.addSubview()。我还发现子视图根本没有隐藏,但是背景是白色的(应该是蓝色或红色)。

添加子视图的代码

//setup
viewBGKRect = CGRect(x: 20, y: 20, width: 984, height: 660)
viewBGK = UIView(frame: viewBGKRect)
viewBGK.backgroundColor = UIColor(red: 139.0, green: 206.0, blue: 231.0, alpha: 1.0)
viewBGK.alpha = 1
viewBGK.isOpaque = true

viewRGKRect = CGRect(x: 20, y: 20, width: 984, height: 660)
viewRGK = UIView(frame: viewRGKRect)
viewRGK.backgroundColor = UIColor(red: 240.0, green: 177.0, blue: 187.0, alpha: 1.0)
viewRGK.alpha = 1
viewRGK.isOpaque = true

//isHidden is set to false when the buttons are pressed
viewBGK.isHidden = true
viewRGK.isHidden = true

view.addSubview(viewBGK)
view.addSubview(viewRGK)

显示子视图的代码

@IBAction func goalkeeper(_ sender: UIButton) {
        switch sender.tag {
        case 0:
            // blue
            viewBGK.isHidden = false
            viewRGK.isHidden = true
            return
        default:
            viewBGK.isHidden = true
            viewRGK.isHidden = false
            return
        }
    }

我希望屏幕顶部会出现一个蓝色/红色矩形,但它不会显示。

2 个答案:

答案 0 :(得分:2)

没关系,我找到了答案: UIColor RGB是0-1而不是0-255,颜色应该是

(蓝色)

UIColor(red:0.55, green:0.81, blue:0.91, alpha:1.0)

(红色)

UIColor(red:0.94, green:0.69, blue:0.73, alpha:1.0)

不是

(蓝色)

UIColor(red: 139.0, green: 206.0, blue: 231.0, alpha: 1.0)

(红色)

UIColor(red: 240.0, green: 177.0, blue: 187.0, alpha: 1.0)

我现在真的很傻。

答案 1 :(得分:1)

如果要使用自定义颜色,则在视图控制器以外的其他位置声明它们可能会更容易。一种方法是在扩展中声明它们。为此,您需要执行以下操作:

  1. 创建一个新的Swift文件并将其命名为UIColor+Extension.swift

  2. 在新文件中,添加以下代码:

    extension UIColor {
        static var customBlue: UIColor {
            return #colorLiteral(red: 0.5450980392, green: 0.8078431373, blue: 0.9058823529, alpha: 1)
        }
    
        static var customRed: UIColor {
            return #colorLiteral(red: 0.9411764706, green: 0.6941176471, blue: 0.7333333333, alpha: 1)
        }
    }
    

我没有输入那些颜色。我只键入了return Color Literal,它显示了一个白色的圆角矩形。当我点击矩形时,我看到了:

enter image description here

然后,我单击“其他”按钮,然后输入RGB值:

enter image description here

最后,您要避免编写重复的代码(DRY =不要重复自己)。这是更新的代码:

//setup
viewBGKRect = CGRect(x: 20, y: 20, width: 984, height: 660)
viewBGK = UIView(frame: viewBGKRect)
viewBGK.backgroundColor = .customBlue

viewRGKRect = CGRect(x: 20, y: 20, width: 984, height: 660)
viewRGK = UIView(frame: viewRGKRect)
viewRGK.backgroundColor = .customRed

[viewBGK, viewRGK].forEach { view in
    view.alpha = 1
    view.isOpaque = true
    //isHidden is set to false when the buttons are pressed
    view.isHidden = true
}