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

У меня есть пользовательский класс Side Menu, основанный на UIViewController.Представление Side menu выглядит следующим образом:

extension UIViewController: MenuPresentableProtocol {

    func setupMenu() {
        guard let menu = AppDelegate.shared.menu else { return }
        menu.view.frame = view.bounds
        view.addSubview(menu.view)
        menu.view.frame.origin.x = -UIScreen.main.bounds.width
    }

}

Это означает, что appearance из status bar зависит от текущего свойства ViewControllers prefersStatusBarHidden, которое в данном случае равно false.

Но мне нужно спрятать часть status bar под side menu.Есть ли способ реализовать это?

Это то, что у меня есть:

Когда меню скрыто, оно выглядит хорошо.

enter image description here

Но когда появляется меню, ...

enter image description here

PS Я пытался использовать этот ответ , но он мне не помог.

Ответы [ 3 ]

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

Либо вы можете полностью скрыть строку состояния, либо вы можете показать полностью.Нет возможности скрыть часть строки состояния.

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

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

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

Ответы верны, вы не можете скрыть только часть строки состояния.Тем не менее, вы можете создать почти идеальную иллюзию, сделав это, перестроив свой собственный клон строки состояния и отобразив его по своему желанию: iOS предоставляет вам необходимую информацию:

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

В конце концов, это больше произведение искусства, чем жесткое кодирование :)

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

Этот фрагмент кода на самом деле скрывает строку состояния с представлением

        UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, 20)] autorelease];
        view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"PortraitNavigationBG"]]; 
        //or use same color as your background

        [self.navigationController.view addSubview:view];
...