我正在尝试显示已添加到视图的子视图,但是当按下按钮时它不会显示。
我尝试将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
}
}
我希望屏幕顶部会出现一个蓝色/红色矩形,但它不会显示。
答案 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)
如果要使用自定义颜色,则在视图控制器以外的其他位置声明它们可能会更容易。一种方法是在扩展中声明它们。为此,您需要执行以下操作:
创建一个新的Swift文件并将其命名为UIColor+Extension.swift
在新文件中,添加以下代码:
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
,它显示了一个白色的圆角矩形。当我点击矩形时,我看到了:
然后,我单击“其他”按钮,然后输入RGB值:
最后,您要避免编写重复的代码(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
}