2015-08-21 54 views
1

我想獲取視圖控制器的框架。視圖控制器由具有選項'UIModalPresentationFormSheet'的另一個視圖控制器呈現。如何在viewWillAppear中獲取視圖控制器的框架,當呈現視圖控制器時使用UIModalPresentationFormSheet

我無法在方法'viewWillAppear'中獲得正確的框架。視圖控制器的大小是1024x768。只有在'viewDidAppear'方法中,我才能得到主視圖的正確框架。我想在viewWillAppear中做一些佈局,框架是必需的。我不想硬編碼的大小。

+0

1024 x 768,聽起來像iPad或其他東西,對吧? – Loxx

回答

3

你不能在viewWillAppear中正確的框架,系統會給你viewDidAppear和viewWillLayoutSubviews,viewDidLayoutSubviews正確的幀。

如果您呈現的視圖與屏幕高度,寬度相同,您可以使用[UIScreen mainScreen] .bound在viewWillAppear中獲取正確的尺寸。但作爲@rounak提到的把你的佈局代碼在viewWillLayoutSubviews,建議

3

把你的佈局代碼在viewWillLayoutSubviews上的UIViewController

1

你不需要硬編碼,高度和寬度,只是宏觀的東西,假設你是呈現全屏模式:

#define SCREEN_WIDTH ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height) 

#define SCREEN_HEIGHT ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width) 

你可以這樣稱呼它們:

SCREEN_HEIGHT和SCREEN_WIDTH;

從你的問題的長相,在UIViewController中被提出,其大小與一臺iPad一樣,所以這個窗口的大小與該應用程序的窗口一樣,讓你的框架是這樣的:

CGRectMake(0,0,SCREEN_WIDTH,SCREEN_HEIGHT) 
相關問題