簡體   English   中英

如何在viewdidload后更新uiview?

[英]How to update uiview after viewdidload?

我正在做一個我沒有開始的項目,現在我們在第一個 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點, topPaddingbottomPadding仍然是 0,因此幀沒有正確設置。 如果我之后更改contentViewFrame高度,它不會對視圖進行任何更改。 我試過:

viewDidLayoutSubviews layoutIfNeeded layoutSubviews

和其他一些沒有幫助的方法。 當我打印contentViewFrame高度時,它發生了變化但沒有可見的效果,所以我錯過了我做錯了什么......也許我沒有在正確的視圖或正確的時刻使用上述方法之一? 或者是別的什么?

謝謝

您可以嘗試將此代碼移動到viewWillAppear:animatedviewDidAppear:animated

IIRC,當調用這些方法中的一個(或兩個)時,將設置您嘗試訪問的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM