Добавление вида сверху панели навигации и панели вкладок - PullRequest
0 голосов
/ 05 января 2019

Это мой код, который идет в viewDidLoad (), это настройка для вида, который всплывает (перемещается в середину экрана), когда я нажимаю кнопку добавления.

    self.view.bringSubviewToFront(addEntryView)
    addEntryView.layer.cornerRadius = 20
    addEntryView.dropShadow()
    self.addEntryView.layer.borderWidth = 5
    self.addEntryView.layer.borderColor = UIColor(red:0.31, green:0.72, blue:0.95, alpha:1.0).cgColor
    addEntryView.backgroundColor = UIColor.white
    addEntryView.frame = CGRect(x: 0, y: 0, width: 370, height: 695)
    view.addSubview(addEntryView)

Но это за моей панелью навигации и панелью вкладок. Я нашел эту строку кода, которая выводит ее выше двух, но потом, когда я переключаю вкладки, вид остается в верхней части экрана.

UIApplication.shared.keyWindow?.addSubview(addEntryView)

Любая помощь с отображением верхней части панелей навигации и вкладок, но только для этой вкладки, поэтому, когда я переключаю вкладки, она исчезает?

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Воспользуйтесь приведенным ниже кодом, чтобы загрузить представление поверх всего

var transperantView = UIView()
if  let appDelegate =  UIApplication.shared.delegate as? AppDelegate,
        let window = appDelegate.window {
    transperantView.frame = CGRect(x: 0, y: 0, width: window.bounds.width, height:  window.bounds.height)
    transperantView.backgroundColor = UIColor(red:0.09, green:0.157, blue:0.2, alpha:0.75)
    window.addSubview(transperantView)
}
0 голосов
/ 05 января 2019

Причина «почему вид остается наверху при переключении вкладок» заключается в следующем: вы пытаетесь addSubview перейти к keyWindow, но не к view какого-либо конкретного viewController, следовательно, его будет применяться поверх всех контроллеров view.

Вам необходимо удалить это из superView перед переключением вкладок в viewWillDisapper или в любой другой функции, которая вызывается, когда вы собираетесь переключать вкладки.

В качестве альтернативы , вы можете сделать это всплывающее представление в качестве отдельного viewController с modalPresentationStyle равным UIModalPresentationStyle.CurrentContext и представить его поверх текущего контроллера представления.

...