Свифт |UIViewController не отображается как всплывающее окно, но полноэкранный - PullRequest
0 голосов
/ 17 мая 2019

Итак, у меня есть viewcontroller, который в основном является окном оповещения, которое должно быть всплывающим и отклоняться нажатием за пределами его фрейма.

Но всякий раз, когда я вызываю этот ВК, он всегда отображается как полноэкранный, а не как всплывающее окно.

Я попробовал несколько способов сделать это, а именно, как указано ниже.

 if let exp : String = expiredVehicles[i] {
        expiredVehicleNumber = expiredVehicles[i]
            let popUpVC = SubscriptionExpired()
            popUpVC.modalTransitionStyle = .crossDissolve
            popUpVC.modalPresentationStyle = .popover // also tried other presentation styles but none work and it is still fullscreen
            popUpVC.view.backgroundColor = UIColor.white.withAlphaComponent(0.8)
            self.present(popUpVC, animated: true, completion: nil)
        }

в случае, если кому-то нужно увидеть определение этого VC, я буду рад поделиться им

Мне кажется, я должен упомянуть, что виртуальный канал, отображаемый в виде всплывающего окна, наследует UIViewController

Любое понимание, которое могло бы помочь, было бы замечательно.

Спасибо за ввод

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Вы можете вызвать следующий метод для отображения всплывающего окна:

    let popupVC = SubscriptionExpired()
    popupVC.modalPresentationStyle = .overCurrentContext
    self.addChild(popupVC)
    popupVC.view.frame = self.view.frame
    self.view.addSubview(popupVC.view)
    popupVC.didMove(toParent: self)
}

Затем для удаления этого всплывающего окна вы можете использовать:

UIView.animate(withDuration: 0.25, animations: {
    self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
    self.view.alpha = 0.0
}, completion: { (finished) in
    if finished {
        self.view.removeFromSuperview()
    }
})

В этом случае у меня есть кнопка внутри всплывающего окна, и всякий раз, когда эта кнопка нажимается выше, метод срабатывает. Можете ли вы попробовать это? Я могу отредактировать свой ответ в соответствии с вашими потребностями.

0 голосов
/ 17 мая 2019

Одним из возможных способов является добавление распознавателя жестов касания в ваш просмотр, который закрывает VC.

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

func addTapRecognizer(){
    let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap))
    self.view.addGestureRecognizer(tap)
}

@objc func handleTap(){
       // dismiss the VC here
    }
}
...