Кажется, что одним из аспектов программного обеспечения iOS является диагностика этих странных, кажущихся тривиальными, но, как ни странно, непонятных проблем с.Странный вид строки состояния после обновления до ECSlidingViewController 2
Итак, сегодня я был счастлив вояк в своем недавнем проекте iOS, и я решил обновить свой проект до последней версии ECSlidingViewController, какой вред он мог бы сделать правильно? Просто обновите несколько устаревших методов, и все.
Так что я сделал все это. Все работает прекрасно, красиво. Однако я заметил, что строка состояния ведет себя странно! Он не появляется, когда я показываю один из моих underLeftViewController
, и он находится в странном оттенке, когда я нажимаю то, что конкретно underLeftViewController
в один из его последующих VC. Какие?? Как это могло произойти? Во всяком случае, картинка стоит тысячи слов:
Так вот оно действует хорошо и нормально:
Теперь он исчезает !!!:
Теперь он имеет странное оттенок !!!:
А вот картина приложения с Slidin g view controller slided out:
Я, должно быть, сделал что-то сумасшедшее в моем баре статуса где-то, тогда я подумал.
Итак, я посмотрел в свой файл реализации для VC, где statusbar действует сумасшедшим. Это фактически подкласс UINavigationController
, а его viewDidLoad
пуст, за исключением линии [super viewDidLoad]
. Так что ничего подозрительного здесь нет.
Страница run test
на самом деле rootViewController
для navVC, поэтому я заглянул в нее. Я положил все мои представления кода настройки в своем viewDidLoad
, и это то, что он выглядит следующим образом:
- (void)viewDidLoad
{
[super viewDidLoad];
// remove advanced button
self.navigationItem.rightBarButtonItem = nil;
self.navigationController.view.layer.shadowOffset = CGSizeMake(1, 0);
// setupGaugeView
[self setupGauge];
// add run test button
[self setupRunTestButton];
// setup notification container
CGRect notificationContainerFrame;
if ([WRGlobalHelper currentDeviceVersion] >= 7) {
CGFloat statusBarHeight = [WRGlobalHelper statusBarHeight];
notificationContainerFrame = CGRectMake(0, [[self.navigationController navigationBar] bounds].size.height+statusBarHeight, self.view.bounds.size.width, 1);
for (UIView *subview in self.view.subviews) {
CGRect newFrame = subview.frame;
newFrame.origin.y += [WRGlobalHelper statusBarHeight];
subview.frame = newFrame;
}
} else {
notificationContainerFrame = CGRectMake(0, [[self.navigationController navigationBar] bounds].size.height, self.view.bounds.size.width, 1);
}
self.notificationContainerView = [[UIView alloc] initWithFrame:notificationContainerFrame];
self.notificationContainerView.clipsToBounds = NO;
self.notificationContainerView.layer.backgroundColor = [UIColor clearColor].CGColor;
[self.view addSubview:self.notificationContainerView];
// some other unrelated stuff omitted....
}
, а `viewDidLoad годов для VCs, где строка состояния действуют нормально или странно, но с оттенком все это совершенно ясно, также, они выглядят как
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self.view addGestureRecognizer:self.slidingViewController.panGesture];
}
Ум, разумеется, и я сдаюсь на этом этапе. Я потратил почти 2 часа на этот единственный вопрос, и мой мозг болит при мысли об исчезновении строки состояния. Всемогущий и всезнающий, пожалуйста, помогите мне! Большое спасибо!
Как насчет странного оттенка? Кажется, что сам бар меняет цвет? Я попробую решение в этом ответе и дам вам знать. – Enzo
Я предполагаю, что это просто эффект строки состояния на цвет фона основного контроллера представления. – Andrea