как боковое меню может покрывать часть строки состояния - PullRequest
0 голосов
/ 08 декабря 2018

В моем приложении для iOS есть экран, в котором есть боковое меню. Когда я проводю по этому боковому меню, я хочу, чтобы оно закрывало строку состояния (но я не хочу, чтобы строка состояния была полностью скрыта), я просто представляю, какая частьчто перекрывает боковое меню, чтобы попасть под боковое меню, а не перед ним, кто-нибудь может мне помочь?(Я использую Swift 4.2 в моем приложении) (это боковое меню - просто еще один ViewController, который я анимирую в своем MainViewController и из него)

1 Ответ

0 голосов
/ 08 декабря 2018

Возможный способ показать боковое меню поверх строки состояния - использовать UIWindow с wndowLevel = .statusBar, которое будет отображать меню состояния UIViewController.Вот быстрая реализация, которую я сделал:

func presentSideMenu() {
    let vc = UIViewController() // side menu controller
    vc.view.backgroundColor = .red
    window = UIWindow()
    window?.frame = CGRect(x: -view.bounds.width, y: 0, width: view.bounds.width, height: view.bounds.height)
    window?.rootViewController = vc
    window?.windowLevel = .statusBar
    window?.makeKeyAndVisible()
    window?.isHidden = false
    window?.addSubview(vc.view)
}

Затем вы можете добавить распознаватель панорамирования к вашему виду и соответствующим образом изменить фрейм окна UIWindow.Снова простой фрагмент:

func hideSideMenu() {
    window?.isHidden = true
    window = nil
}

@objc func pan(recognizer: UIPanGestureRecognizer) {
    if recognizer.state == .began {
        presentSideMenu()
    } else if recognizer.state == .changed {
        let location = recognizer.location(in: view)
        window?.frame = CGRect(x: -view.frame.width + location.x, y: 0, width: view.frame.width, height: view.frame.height)
    } else if recognizer.state == .ended {
        hideSideMenu()
    }
}

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

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