XCode 11 и iOS 13 Модальный ViewController потерял черное наложение - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть UIViewController A, который представляет модально еще один UIViewController B, который занимает только нижнюю половину высоты экрана.

Назад, когда я все еще использовал Xcode 10, когда представлен модальный ViewController B, темное наложение покроет ViewController A, и я также установлю view.alpha ViewController A на 0.5, используя следующие методы:

func presentBottomSheet() {

  let viewController = BottomSheetModalVC()
  viewController.modalPresentationStyle = .overCurrentContext

  DispatchQueue.main.async { [weak self] in
        self?.dimParent()
        self?.parentViewController?.present(viewController, animated: true, completion: nil)
  }
}

func dimParent() {
 UIView.transition(with: parentVC.view, duration: 0.6, options: [.curveEaseOut], animations: {
   parentVC.view.alpha = 0.5
 })
}

, чтобы сместить фокус пользователя на модальное представление. Однако, когда я попытался скомпилировать это с Xcode 11, черное наложение закончено, и у меня остается родительское представление, которое становится наполовину видимым, когда модальное представление скользит снизу вверх. Были ли изменения в этом режиме наложения?

Мой экран выглядит примерно так. Но после Xcode 11 черный оверлей больше не существует, оставляя меня с полностью прозрачным оверлеем. enter image description here

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Нашел свой собственный ответ на этот глупый вопрос.

Так что получается, что у UINavigationController, представляющего ViewController A & B, был установлен цвет фона на белый, поэтому, когда ViewController A имеет альфа-значение, равное 0,5, он просто похоже, что он исчезал, но не тускнеет.

Я установил цвет фона моего NavigationController на черный, и все вернулось к норме.

0 голосов
/ 26 февраля 2020

Создание UIView в ViewControllerB. В вашем случае его BottomSheetModalV C

var backgroundView: UIView = {
    let view = UIView()
    view.backgroundColor = UIColor.black.withAlphaComponent(0.7)
    return view
}()

Добавить backgroundView в качестве подвида в представление представленияViewController

override func viewWillLayoutSubviews() {
    presentingViewController?.view.addSubview(backgroundView)
    backgroundView.frame = presentingViewController?.view.bounds ?? .zero
}

Удалить этот backgroundView в viewWillDisappear

override func viewWillDisappear(_ animated: Bool) {
       super.viewWillDisappear(animated)
       UIView.animate(withDuration: 0.3) {
           self.backgroundView.removeFromSuperview()
       }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...