視圖控制器中各方法何時走,走幾回。

一.首先說一下viewWillLayoutSubviews這個方法 app


//從新佈局視圖控制器,剛進視圖控制器是會走倆次(在didload和viewwillappera以後)橫豎屏一變更,就走這個方法,而didLoad和viewWillAppear只在開始走。viewWillAppear從其餘界面退回來時會走。 佈局

二.各方法在下面幾種狀況下是否調用


//豎屏剛進來:viewDidLoad 1次 viewWillAppear 1次 viewWillLayoutSubviews 2次 viewDidAppear 1次 spa

//跳轉出去: viewWillLayoutSubviews 1次 io

//從別的界面跳轉回來: viewWillAppear 1次 viewWillLayoutSubviews 1次  viewDidAppear 1次 後臺

// viewWillLayoutSubviews 1次 方法

// 進去後臺 : di

// 從後臺回來: view

// 橫屏變豎屏:viewWillLayoutSubviews 1次 vi

// 豎屏變橫屏:viewWillLayoutSubviews 1次 co


// 橫屏剛進來:默認豎屏,若是一進來就是橫屏的話會走三次viewWillLayoutSubviews,前倆次與豎屏剛進來同樣,第3次至關於走豎屏變橫屏

// 從別的界面跳回來:和豎屏從別的界面回來同樣


三.

從上面能夠看出若是在屏幕旋轉後要得到[UIScreen mainScreen].bounds.size.width計算的寬度值,需在viewWillLayoutSubviews方法中得到,只有這個方法在橫豎屏旋轉時會走(橫豎屏時計算出來寬高是不同的,在橫屏的寬度是在豎屏時的高度值,在橫屏的高度值是在豎屏的寬度值)。

CGFloat applicationFrameHeight = [[UIScreen mainScreen] applicationFrame].size.height;

CGFloat applicationFrameWidth = [[UIScreen mainScreen] applicationFrame].size.width;

這個在橫豎屏時計算出來的也有須要注意的:在豎屏下高會減去狀態欄的高度20,但在橫屏時不會減去狀態欄高度,也就是在橫屏下計算出來的 applicationFrame和bounds的值相同。
相關文章
相關標籤/搜索