【发布时间】:2015-10-18 04:39:38
【问题描述】:
我正在为 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];
在settingsViewController 的viewDidLoad 内,我希望能够获得弹出框的宽度和高度,我该怎么做?我尝试使用以下内容,但它们都返回整个 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
任何帮助将不胜感激!
【问题讨论】:
-
在
viewWillAppear而不是viewDidLoad中尝试您的NSLog 代码。您可能需要执行self.navigationController.view.frame.size以考虑导航栏高度。 -
viewWillAppear 没有被调用,我相信这是因为它在 UINavigationController..
-
如果您看到您的设置控制器出现在屏幕上,则应该调用
viewWillAppear和viewDidAppear。可能值得您发布更多代码。 -
谢谢@RoryMcKinnel 这行得通,它需要在 viewWillAppear 中才能工作。这是因为当我试图获取值时,该视图在技术上没有设置为当前视图?谢谢。
-
然后
viewWillAppear被调用了——我只是忘记了:(BOOL)animated...!
标签: ios objective-c ipad cocoa-touch