Как быстро изменить общий цвет фона экрана, кроме всплывающего окна - PullRequest
1 голос
/ 10 июля 2020

Я не могу создать безопасное пользовательское всплывающее окно .. поэтому я попытался, как указано ниже, один из ответов

вот иерархия просмотра раскадровки

enter image description here

 popBG view background colour is black with alpha = 0.3

this is code:

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
}

}

now the tableview and button are not showing transperently.. only popbg and popview coming.. did i miss anything..

enter image description here

Actually i need like this: total backgroundview in some darkcolour and popupview heighlighted in white colour

введите описание изображения здесь

Ответы [ 3 ]

2 голосов
/ 10 июля 2020
  1. при предоставлении альфа-значения для просмотра

view изменяется альфа-значение субпредставления, включая popupView

если задан цвет фона для просмотра, включая popupView

view альфа-значение субпредставления не изменяется, включая popupView

popupView - это подпредставление view, альфа-значение view влияет на альфа-значение его подвидов.

view.addSubview(popupView)

Текущая структура:

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

Решение состоит в том, что popupView не является подвидом view, в котором вы показываете изменение цвета с помощью

Необходимо, чтобы представление контейнера было отделено от popupView

// backgroundColorChangeContainerView add other views ( tableView ... )
view.addSubview(backgroundColorChangeContainerView)
view.addSubview(popupView)
1 голос
/ 10 июля 2020

другой способ получить как ваше окончательное изображение .. custom pop controller avoids this situation

поместите popupView в настраиваемый viewController, затем

 @IBAction func addAddressBtn(_ sender: Any) {
       present(PopupViewController(nibName: "PopupViewController", bundle: nil), animated: true) {}
 }
1 голос
/ 10 июля 2020

Сделайте всплывающее окно в полноэкранном режиме ... с фоном и под-просмотром в виде всплывающего окна на этом фоне ... так что вам не нужно ничего менять, когда вы показываете или скрываете всплывающее окно, и его легко реализовать ... Полный экран UIView имея popUp UIView поверх него

У вас должно быть представление с названием MainPopUpView ... в этом представлении вы добавите два UIViews ...

  1. Фоновый вид ... с черным цветом с альфа-каналом 0.3
  2. PopUpUI View ... который показывает фактическое всплывающее окно
                -> backGround UIView full screen  (with alpha 0.3) 
   MainPopUpView 
               -> popUpView short & centre and shows actual content

Итак, MainPopUpView имеет два представления ...

вот иерархия

введите описание изображения здесь

...