在运行时获取 UIModalPresentationFormSheet 的大小

Obtaining the size of a UIModalPresentationFormSheet at runtime

我正在为 iPad 制作一个应用程序,它主要是一个带有设置按钮的 UISplitViewController 应用程序,该按钮使用 UIModalPresentationFormSheet 打开设置视图控制器,如下所示:

SettingsViewController * settingsViewController = [[SettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
settingsViewController.managedObjectContext = self.managedObjectContext;

UINavigationController * settingsNC = [[UINavigationController alloc] initWithRootViewController:settingsViewController];
settingsNC.modalPresentationStyle = UIModalPresentationFormSheet;
settingsNC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:settingsNC animated:YES completion:nil];

settingsViewControllerviewDidLoad 内,我想获得弹出窗口的宽度和高度,我该怎么做?我尝试使用以下内容,但它们都 return 整个 iPad 屏幕尺寸..

NSLog(@"x: %f y: %f ",self.view.bounds.size.width,self.view.bounds.size.height);
NSLog(@"x: %f y: %f ",self.view.frame.size.width,self.view.frame.size.height);

// outputs 
// x: 1024.000000 y: 748.000000 
// x: 1024.000000 y: 748.000000 

如有任何帮助,我们将不胜感激!

多亏了 Rory,我才让这个工作正常,只需在 viewWillAppear 方法中调用找出视图控制器的大小即可。当在 viewDidLoad 中调用时,它 returns 是超级视图的边界,这就是它返回整个屏幕尺寸的原因 - 我认为这是由于呈现的视图控制器在 viewDidLoad 之后才在技术上处于活动状态。

-(void)viewWillAppear:(BOOL)animated{
    NSLog(@"x: %f y: %f ",self.view.bounds.size.width,self.view.bounds.size.height);
    NSLog(@"x: %f y: %f ",self.view.frame.size.width,self.view.frame.size.height);
}

// outputs
// x: 540.000000 y: 576.000000 
// x: 540.000000 y: 576.000000