Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何以编程方式使用swift使用UIView覆盖整个屏幕_Ios_Swift_Uiview_Programmatically - Fatal编程技术网

Ios 如何以编程方式使用swift使用UIView覆盖整个屏幕

Ios 如何以编程方式使用swift使用UIView覆盖整个屏幕,ios,swift,uiview,programmatically,Ios,Swift,Uiview,Programmatically,我试图用UIview覆盖整个屏幕,这样当我按下一个按钮时,我可以在上面放置一个暗模式主题。它可以正常工作唯一的问题是它没有覆盖导航栏,这是我想做的事情我查了一些东西我发现这段代码在我看过的教程中有效,但现在不起作用我认为swift已经更新了语言,使解决方案陈旧 if let window = UIApplication.shared.keyWindow { let blackView = UIView() blackView.backgroundColor

我试图用UIview覆盖整个屏幕,这样当我按下一个按钮时,我可以在上面放置一个暗模式主题。它可以正常工作唯一的问题是它没有覆盖导航栏,这是我想做的事情我查了一些东西我发现这段代码在我看过的教程中有效,但现在不起作用我认为swift已经更新了语言,使解决方案陈旧

    if let window = UIApplication.shared.keyWindow {
        let blackView = UIView()
        blackView.backgroundColor = .black
        view.addSubview(blackView)
               blackView.frame = window.frame



    } 
Swift 4.X

您可以在项目中添加扩展名

extension UIView {

    func addToWindow()  {
        let window = UIApplication.shared.keyWindow!
        self.frame = window.bounds
        window.addSubview(self)
    }
}
使用:


Xcode表示iOS 13.0中不推荐使用“keyWindow”。不应用于支持多个场景的应用程序,因为它会在所有连接的场景中返回一个关键窗口scenes@ChuckZHB解决方案已经可用,谢谢。在尝试了一些代码方式后,对我不起作用。然后在IB中,我将holder视图的顶部和底部定位更改为superviewview上的约束,而不是安全区域,这样holder视图就可以填充整个屏幕。
bgView = UIView(frame: UIScreen.main.bounds)
bgView.backgroundColor = UIColor(white: 0, alpha: 0.4)
bgView.addToWindow()