Панель навигации не отображается должным образом в IOS 13 - PullRequest
0 голосов
/ 26 сентября 2019

enter image description here

Здесь я скрыл панель навигации по умолчанию и создал собственную панель навигации.При запуске на устройстве iOS 13 с использованием Xcode 11 отображаются две навигационные панели.

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
}

enter image description here

Панель навигации не выровнена по верхнему краю экрана после того, какобновление до iOS 13

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

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

[self.navigationController setNavigationBarHidden: true animated: true];[self setExtendedLayoutIncludesOpaqueBars: true];

оттуда вы должны получить доступ к значениям верхнего макета, который будет 44 точками и 20 точками в зависимости от размера iphone, к которому вы обращаетесь таким образом в loadview или viewdidloadили пользовательский подкласс

UIWindow * window = UIApplication.sharedApplication.keyWindow;CGFloat topPadding = window.safeAreaInsets.top;

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

CGRect tempRect = CGRectMake (0, 0, self.view.frame.size.width, topPadding + 44);

44 присутствует, потому что он постоянен для всех iphone и ipads на данный момент (это может измениться в будущем и аннулировать это решение, но пока это стандарт)

, который вернет правильные размеры для всех размеров iPhone.

THIS => [self setExtendedLayoutIncludesOpaqueBars: true];

АБСОЛЮТНО необходимо сделать эту работу, как я объяснил.Это не очень хорошая идея, чтобы идти по этому пути, потому что очень редко вам когда-либо нужно переопределять и заменять панель навигации на какой-то пользовательский UIView, но если вам нужно это сделать, это то, как вы это делаете.Просто знайте, что это сломается, если вы не обновляете размеры фрейма во время состояния вызова и других крайних случаев.

0 голосов
/ 26 сентября 2019

Попробуйте safeAreaLayoutGuide

Apple: руководство по компоновке, представляющее часть вашего представления, которая не ограждена столбцами и другим содержимым.

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