首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >除了视图控制器一个视图之外,是否可以使视图控制器变暗(如报警视图控制器

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

Stack Overflow用户
提问于 2018-02-22 14:18:03
回答 2查看 570关注 0票数 2

我只想创建一个视图,当它显示时,整个背景将变暗,就像警报视图控制器一样。如果这是可能的,那么请指导我,如果可能的话,然后提供我的代码。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-02-22 14:35:06

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

你也可以使用一个模式视图控制器,它有一个这样的背景视图作为它的视图,并在全屏上以展示风格呈现这个控制器。

票数 2
EN

Stack Overflow用户

发布于 2018-02-22 15:31:52

代码语言:javascript
运行
复制
// 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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48920822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档