首页 > 解决方案 > 如何从嵌入式视图中获取视图的背景颜色

问题描述

并提前感谢您的帮助。

我有一个要加载到多个 ViewController 中的嵌入式视图。这工作正常。当我尝试获取主视图的背景颜色时,问题就来了。 图片是VC设置

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

下面的代码显然只会获得嵌入式 VC 中视图的颜色。我想一定要去检查superview之类的吗?

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

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

标签: swift

解决方案


如果它是根,你可以试试这个

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

推荐阅读