【问题标题】:How to change total screen background colour except popup view in swift如何在swift中更改除弹出视图外的总屏幕背景颜色
【发布时间】:2020-10-30 20:34:29
【问题描述】:

我无法创建单独的自定义弹出视图..所以我尝试了下面提到的答案之一

这里是故事板视图层次结构

 popBG view background colour is black with alpha = 0.3

这是代码:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var popViewtop: UIView!    
@IBOutlet weak var testTable: UITableView!

@IBOutlet weak var popView: UIView!
@IBOutlet weak var popBG: UIView!
override func viewDidLoad() {
    super.viewDidLoad()
    popViewtop.isHidden = true
  
}

@IBAction func testBtn(_ sender: Any) {
    popViewtop.isHidden = false
}

@IBAction func btnPop(_ sender: Any) {
    
     let viewController = self.storyboard?.instantiateViewController(withIdentifier: "NewZoomAddressViewController") as! NewZoomAddressViewController;
    popViewtop.isHidden = true

    self.navigationController?.pushViewController(viewController, animated: true);
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 10
}

}

现在 tableview 和按钮没有透明显示..只有 popbg 和 popview 来了..我错过了什么..

其实我需要这样的:在一些深色的总背景视图和以白色突出显示的弹出视图

【问题讨论】:

    标签: ios swift xcode uiview uicolor


    【解决方案1】:
    1. 如果给视图赋予 alpha 值,

    view的subView的alpha值变化,包括popupView

    1. 如果给背景颜色以查看,包括popupView

    view的subView的alpha值没有变化,包括popupView


    popupViewview 的子视图,view 的 alpha 值会影响其子视图的 alpha。

    view.addSubview(popupView)
    

    您当前的结构:

    RootView->Subviews //Changing RootView alpha effects Subviews.
    

    解决方案是 popupView 不是 view 的子视图,您可以用它来显示颜色变化

    需要一个容器视图来与popupView分开

    // backgroundColorChangeContainerView add other views ( tableView ... )
    view.addSubview(backgroundColorChangeContainerView)
    view.addSubview(popupView)
    

    【讨论】:

    • 而不是添加和删除两个视图...更好的方法是拥有一个具有 bg 和弹出窗口的视图 ....
    • 从描述中,我认为popupView 只是一个小的UI 小部件,而不是自定义的UIAlertController。使用自定义弹出控制器可以避免这种情况,并且无法教题主view hierarchy
    • 答案要我为 popupView 创建另一个 bg 视图??
    • 是的,popupView 是小 UI,只在我点击按钮时显示??有没有其他方法可以像我的最终图像一样实现..custom pop controller avoids this situation 如何??..我已经用视图层次编辑了我的帖子..请看一下
    • 我在下面看到了答案
    【解决方案2】:

    使您的弹出视图全屏显示..它具有背景并且在该背景上有作为弹出窗口的子视图...所以一旦您显示或隐藏弹出窗口并且它易于实现,您无需更改任何内容...全屏@987654323 @在上面弹出UIView

    您应该有一个名为 MainPopUpView 的视图...在此视图中您将添加两个 UIView...

    1. 背景视图...黑色,alpha 0.3
    2. PopUpUI 视图 ... 显示实际弹出窗口
                    -> backGround UIView full screen  (with alpha 0.3) 
       MainPopUpView 
                   -> popUpView short & centre and shows actual content
    
    

    所以 MainPopUpView 有两个视图 ...

    这是层次结构

    【讨论】:

    • 我明白如果我改变视图 alpha 它也会影响popupvVew...所以你想让我做什么我不明白.. 我应该再创建一个背景视图吗popupView?你能详细解释一下吗
    • 我无法创建单独的自定义弹出视图...所以我创建了像您的答案一样的内容...这里一切正常...但是侧面 popView 中的实际标签和按钮也变得模糊,为什么??跨度>
    • 我已经用你的回答完全编辑了我的帖子。请看一下
    • 你需要... MainPopUp.backgroundcolor = .clear
    • bg.backgroundcolor = .blackbg.alpha = 0.3
    【解决方案3】:

    实现最终图像的其他方式..custom pop controller avoids this situation

    将您的 popupView 放入自定义 viewController,然后

     @IBAction func addAddressBtn(_ sender: Any) {
           present(PopupViewController(nibName: "PopupViewController", bundle: nil), animated: true) {}
     }
    

    【讨论】:

      猜你喜欢
      • 2021-02-07
      • 2011-05-17
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      相关资源
      最近更新 更多