Настраиваемое всплывающее окно над UITableViewController можно прокручивать - как предотвратить - Swift - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь сделать пользовательское всплывающее окно над UITableViewController, встроенным в UINavigationController, но у меня возникают две проблемы:

  1. Непрозрачность, которую я определил, назначив альфа-значение цвету фона контроллера UIView для всплывающего окна, похоже, не работает.
  2. Контроллер UIView для всплывающего окна можно перелистывать. Если я делаю жест слева направо на экране, я могу нажать всплывающее окно. Как я могу предотвратить это от такого поведения? Я пытаюсь показать прогресс загрузки файла, поэтому важно, чтобы всплывающее окно не могло быть удалено.

См. Снимок экрана ниже.

    func showProgrssBarPopUp(){

    let popUp = self.storyboard?.instantiateViewController(withIdentifier: "uploadPopUp") as! ProgressBarPopUpViewController
    self.navigationController?.pushViewController(popUp, animated: true)

    }

enter image description here

Нижний контент viewcontroller недоступен для просмотра, даже если альфа-значение наложенного popcon viewcontroller установлено на 0.5:

enter image description here

Весь viewcontroller для всплывающих окон можно перелистывать:

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Просто переопределить посмотреть способ появления / отклонения контроллера

class PopUpController: UIViewController {    

override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            if animated {
                view.backgroundColor = .clear
                UIView.animate(withDuration: animationTime) {
                    self.view.layer.backgroundColor = UIColor.black.withAlphaComponent(0.75).cgColor
                }
            }
        }

override func dismiss(animated flag: Bool, completion: (() -> Void)? = nil) {
    if flag {
        UIView.animate(withDuration: animationTime, animations: {
            self.view.layer.backgroundColor = UIColor.clear.cgColor
        }, completion: { (bool) in
            super.dismiss(animated: false, completion: completion)
        })
    } else {
        super.dismiss(animated: flag, completion: completion)
    }
}
}

Используйте

let popUp = PopUpController()
popUp.modalPresentationStyle = .overCurrentContext
self.present(popUp, animated: true, completion: nil)
0 голосов
/ 05 мая 2018

Вы можете установить альфа фона

self.view.backgroundColor = UIColor.white.withAlphaComponent(0.2)

Вы можете представить ProgressBar View с modalPresentationStyle как overCurrentContext

 let popUp = self.storyboard?.instantiateViewController(withIdentifier: "uploadPopUp") as! ProgressBarPopUpViewController
        popUp.modalPresentationStyle = .overCurrentContext
self.present(popUp, animated: true, completion: nil)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...