Я работаю над проектом, который я не запустил, и теперь мы обнаружили ошибку в первом VC:
Первый viewcontroller имеет меню верхней панели и меню нижней панели. остальное - контейнерное представление, которое показывает необходимые контроллеры представления.
В viewDidLoad
этот метод вызывается:
self.currentIndex = 0;
CGRect screenBounds = [[UIScreen mainScreen] bounds];
CGRect contentViewFrame = screenBounds;
// iPhone X
if (@available(iOS 11.0, *)) {
UIWindow *window = [UIApplication sharedApplication].keyWindow;
CGFloat topPadding = window.safeAreaInsets.top;
CGFloat bottomPadding = window.safeAreaInsets.bottom;
contentViewFrame.origin.y = topPadding + 20.0; // 20 p for status bar
contentViewFrame.size.height -= (rootView.bottomBarView.frame.size.height + (topPadding + 20.0) + bottomPadding); // topPadding + 20 statusbar
} else {
contentViewFrame.size.height -= rootView.bottomBarView.frame.size.height;
}
self.conversationVC = [[VOCConversationVC alloc] initWithFrame: contentViewFrame];
self.diaryVC = [[VOCDiaryVC alloc] initWithFrame: contentViewFrame];
self.managementVC = [[VOCManagementVC alloc] initWithFrame: contentViewFrame];
self.viewControllerSelected = VOCViewControllerSelectedCommunication;
}
Дело в ViewDidLoad
точке, topPadding
и bottomPadding
по-прежнему равны 0, поэтому кадры установлены неправильно.
И если я изменю высоту contentViewFrame
после, это не изменит вид. Я попробовал:
viewDidLayoutSubviews
layoutIfNeeded
layoutSubviews
и некоторые другие методы, которые не помогли. Когда я печатаю высоту contentViewFrame
, она изменяется, но видимых эффектов нет, поэтому мне не хватает того, что я делаю неправильно ... Может быть, один из вышеперечисленных методов я не использую для правильного просмотра или в нужный момент? Или это что-то еще?
Спасибо