我正在做一个我没有开始的项目,现在我们在第一个VC上发现了一个错误:
第一个视图控制器具有顶部栏菜单和底部栏菜单。其余的是一个容器视图,其中显示了所需的视图控制器。
在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
高度时,它已更改但没有可见的效果,因此我错过了我做错的事情……也许是上述方法之一我没有在适当的视图或适当的时间使用?或者是别的什么?谢谢
最佳答案
您可以尝试将此代码移动到viewWillAppear:animated
或viewDidAppear:animated
。
IIRC,将在调用这些方法中的一个(或两个)时设置您尝试访问的变量。
关于ios - viewdidload后如何更新uiview?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55547658/