Ios viewdidload后如何更新uiview?

Ios viewdidload后如何更新uiview?,ios,objective-c,autolayout,size,screen,Ios,Objective C,Autolayout,Size,Screen,我正在做一个我没有开始的项目,现在我们在第一个VC上发现了一个bug: 第一个viewcontroller具有顶栏菜单和底栏菜单。其余部分是一个containerview,显示所需的ViewController。 在viewDidLoad中调用此方法: self.currentIndex = 0; CGRect screenBounds = [[UIScreen mainScreen] bounds]; CGRect contentViewFrame = screen

我正在做一个我没有开始的项目,现在我们在第一个VC上发现了一个bug: 第一个viewcontroller具有顶栏菜单和底栏菜单。其余部分是一个containerview,显示所需的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
height,则不会对视图进行任何更改。我试过:

viewdilayoutsubviews
layoutifneed
布局子视图

还有其他一些没用的方法。当我打印
contentViewFrame
高度时,它已更改,但没有可见效果,因此我忽略了我做错的地方。。。也许我没有在适当的时间以适当的视角使用上述方法之一?还是别的什么


谢谢

您可以尝试将此代码移动到
视图将显示:动画
视图显示:动画

IIRC,当调用其中一个(或两个)方法时,将设置您尝试访问的变量