我想获得一个视图控制器的框架。视图控制器由另一个视图控制器显示,其中包含选项' UIModalPresentationFormSheet'。
我无法在方法' viewWillAppear'中获得正确的框架。视图控制器的大小为1024x768。仅在方法' viewDidAppear'我可以得到主视图的正确框架。我想在viewWillAppear中做一些布局,框架是必需的。我不想硬编码大小。
答案 0 :(得分:3)
将您的布局代码放在UIViewController上的viewWillLayoutSubviews
中答案 1 :(得分:3)
您无法在viewWillAppear中获取正确的帧,系统将在viewDidAppear和viewWillLayoutSubviews,viewDidLayoutSubviews中为您提供正确的帧。
如果您呈现的视图与屏幕高度,宽度相同,则可以使用[UIScreen mainScreen] .bound在viewWillAppear中获取正确的尺寸。但建议@rounak提到将您的布局代码放在viewWillLayoutSubviews
中答案 2 :(得分: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)