Ios 除了视图控制器的一个视图外,是否可以使视图控制器变暗(如警报视图控制器)

Ios 除了视图控制器的一个视图外,是否可以使视图控制器变暗(如警报视图控制器),ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我只是想创建一个视图,当它显示时,整个背景会像警报视图控制器一样变暗。如果可能,请指导我,如果可能,请向我提供代码 谢谢最简单的方法是添加半透明背景(例如,alpha小于1.0的黑色)视图,其中包含警报视图。背景视图应覆盖视图控制器中的所有其他视图 您还可以使用具有背景视图作为其视图的模态视图控制器,并以全屏显示样式显示此控制器。关键是使用一些alpha值(如0.7)设置视图背景颜色。可以使用普通视图或视图控制器实现这一点。您尝试了什么,哪里卡住了?通过编程添加一个低Alpha和BG为黑色的UI

我只是想创建一个视图,当它显示时,整个背景会像警报视图控制器一样变暗。如果可能,请指导我,如果可能,请向我提供代码


谢谢

最简单的方法是添加半透明背景(例如,alpha小于1.0的黑色)视图,其中包含警报视图。背景视图应覆盖视图控制器中的所有其他视图


您还可以使用具有背景视图作为其视图的模态视图控制器,并以全屏显示样式显示此控制器。

关键是使用一些alpha值(如0.7)设置视图背景颜色。可以使用普通视图或视图控制器实现这一点。您尝试了什么,哪里卡住了?通过编程添加一个低Alpha和BG为黑色的UIView,并在创建的视图中添加要高亮显示为子视图的视图非常感谢
// Here is the wrapper code  i use in most of my project now a days
protocol TransparentBackgroundProtocol {

  associatedtype ContainedView
  var containedNib: ContainedView? { get set }

}

extension TransparentBackgroundProtocol  where ContainedView: UIView {

  func dismiss() {
    containedNib?.superview?.removeFromSuperview()
    containedNib?.removeFromSuperview()
  }

  mutating func add(withFrame frame: CGRect, toView view: UIView, backGroundViewAlpha: CGFloat) {
    containedNib?.frame = frame
    let backgroundView = configureABlackBackGroundView(alpha: backGroundViewAlpha)
    view.addSubview(backgroundView)

    guard let containedNib = containedNib else {
      print("No ContainedNib")
      return
    }
    backgroundView.addSubview(containedNib)
  }

  private func configureABlackBackGroundView(alpha: CGFloat) -> UIView {
    let blackBackgroundView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height))
    blackBackgroundView.backgroundColor = UIColor.black.withAlphaComponent(alpha)
    return blackBackgroundView
  }
}

// Sample View shown like alertView

class LogoutPopUpView: UIView, TransparentBackgroundProtocol {

    // MARK: Variables
    weak var containedNib: LogoutPopUpView?
    typealias ContainedView = LogoutPopUpView

    // MARK: Outlets


    // MARK: Functions
    class func initiate() -> LogoutPopUpView {
        guard let nibView = Bundle.main.loadNibNamed("LogoutPopUpView", owner: self, options: nil)?[0] as? LogoutPopUpView else {
            fatalError("Cann't able to load nib file.")
        }
         return nibView
    }

}


// where  u want to show pop Up
        logOutPopup = LogoutPopUpView.instanciateFromNib()
       let view = UIApplication.shared.keyWindow?.rootViewController?.view {
            logOutPopup?.add(withFrame: CGRect(x: 30, y:(UIScreen.main.bounds.size.height-340)/2, width: UIScreen.main.bounds.size.width - 60, height: 300), toView: view, backGroundViewAlpha: 0.8)            
        }
 // for dismiss
self.logOutPopup?.dismiss()