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()