[英]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
點, topPadding
和bottomPadding
仍然是 0,因此幀沒有正確設置。 如果我之后更改contentViewFrame
高度,它不會對視圖進行任何更改。 我試過:
viewDidLayoutSubviews
layoutIfNeeded
layoutSubviews
和其他一些沒有幫助的方法。 當我打印contentViewFrame
高度時,它發生了變化但沒有可見的效果,所以我錯過了我做錯了什么......也許我沒有在正確的視圖或正確的時刻使用上述方法之一? 或者是別的什么?
謝謝
您可以嘗試將此代碼移動到viewWillAppear:animated
或viewDidAppear:animated
。
IIRC,當調用這些方法中的一個(或兩個)時,將設置您嘗試訪問的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.