Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用UIModalPresentationFormSheet显示视图控制器时,将显示如何在视图中获取视图控制器的框架_Ios - Fatal编程技术网

Ios 使用UIModalPresentationFormSheet显示视图控制器时,将显示如何在视图中获取视图控制器的框架

Ios 使用UIModalPresentationFormSheet显示视图控制器时,将显示如何在视图中获取视图控制器的框架,ios,Ios,我想得到一个视图控制器的框架。视图控制器由另一个具有“UIModalPresentationFormSheet”选项的视图控制器显示 我无法在方法“ViewWillExample”中获得正确的帧。视图控制器的大小为1024x768。只有在“viewDidAppear”方法中,我才能获得主视图的正确帧。我想在视图中做一些布局。如果出现,框架是必需的。我不想硬编码尺寸。将布局代码放在视图中将布局子视图放在UIViewController上将布局代码放在视图中将布局子视图放在UIViewControl

我想得到一个视图控制器的框架。视图控制器由另一个具有“UIModalPresentationFormSheet”选项的视图控制器显示


我无法在方法“ViewWillExample”中获得正确的帧。视图控制器的大小为1024x768。只有在“viewDidAppear”方法中,我才能获得主视图的正确帧。我想在视图中做一些布局。如果出现,框架是必需的。我不想硬编码尺寸。

将布局代码放在视图中将布局子视图放在UIViewController上

将布局代码放在视图中将布局子视图放在UIViewController上

您无法在ViewWillDisplay中获得正确的帧,系统将在ViewDidDisplay中为您提供正确的帧,ViewWillLayoutSubView,ViewDidLayoutSubView


如果显示的视图与屏幕高度、宽度相同,则可以使用[UIScreen Main screen]。将显示绑定以在视图中获得正确尺寸的视图。但正如@rounak所提到的,建议将布局代码放入viewWillLayoutSubviews

您无法在ViewWillDisplay中获得正确的帧,系统将在ViewDidDisplay和viewWillLayoutSubviews中为您提供正确的帧,viewDidLayoutSubviews


如果显示的视图与屏幕高度、宽度相同,则可以使用[UIScreen Main screen]。将显示绑定以在视图中获得正确尺寸的视图。但正如@rounak所提到的,建议您将布局代码放在viewWillLayoutSubviews中,您不需要硬编码、高度和宽度,只要宏化这些内容,假设您呈现的是全屏模式:

#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)
你可以这样称呼他们:

屏幕高度和屏幕宽度

从您问题的外观来看,呈现的UIViewController与IPad大小相同,因此此窗口与应用程序窗口大小相同,因此您的框架如下:

CGRectMake(0,0,SCREEN_WIDTH,SCREEN_HEIGHT)

您不需要硬编码高度和宽度,只要宏化这些内容,假设您呈现的是全屏模式:

#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)
你可以这样称呼他们:

屏幕高度和屏幕宽度

从您问题的外观来看,呈现的UIViewController与IPad大小相同,因此此窗口与应用程序窗口大小相同,因此您的框架如下:

CGRectMake(0,0,SCREEN_WIDTH,SCREEN_HEIGHT)

1024x768,听起来像iPad什么的,对吧?1024x768,听起来像iPad什么的,对吧?