如何从嵌入式视图内部获取视图的背景色

时间:2019-01-17 14:58:08

标签: swift

在此先感谢您的帮助。

我有一个嵌入式视图,要在多个ViewController中加载。这很好。当我尝试获取主视图的背景色时,问题就来了。 Image is VC setup

所以我尝试了各种方法。我考虑过使用userDefaults并在主VC加载时保存颜色,并从嵌入式VC中的userDefaults获取颜色,但这感觉有点不合常规。

下面的代码显然只会获得嵌入式VC中视图的颜色。我以为必须要检查超级观看内容或其他内容?

 if self.view.backgroundColor!.isEqual(UIColor.White) {
        print("Background is White")
    } else {
        print("not White")
    }

我希望这是有道理的。再次感谢您的任何启发。

1 个答案:

答案 0 :(得分:0)

如果它是根,则可以尝试

if let roo = (UIApplication.shared.delegate as! AppDelegate).window?.rootViewController { 
    print(roo.view.backgroundColor)
    if roo.view.backgroundColor == .white {
      print("Yes")
    }
    else {
      print("No")
    }
}

如果没有,您也可以创建类似的委托

class ChildVC: UIViewController {
   weak var delegate:ParentVC?
}

并在父级viewDidLoad

if let fir = self.children.first as? ChildVC {
    fir.delegate = self 
}

之后,您可以使用

delegate?.view.backgroundColor