【问题标题】:Obtaining the size of a UIModalPresentationFormSheet at runtime在运行时获取 UIModalPresentationFormSheet 的大小
【发布时间】: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];

settingsViewControllerviewDidLoad 内,我希望能够获得弹出框的宽度和高度,我该怎么做?我尝试使用以下内容,但它们都返回整个 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..
  • 如果您看到您的设置控制器出现在屏幕上,则应该调用 viewWillAppearviewDidAppear。可能值得您发布更多代码。
  • 谢谢@RoryMcKinnel 这行得通,它需要在 viewWillAppear 中才能工作。这是因为当我试图获取值时,该视图在技术上没有设置为当前视图?谢谢。
  • 然后viewWillAppear 被调用了——我只是忘记了:(BOOL)animated...!

标签: ios objective-c ipad cocoa-touch


【解决方案1】:

多亏了 Rory,我才能正常工作,只需在 viewWillAppear 方法中完成调用来找出视图控制器的大小。当在 viewDidLoad 中调用它时,它会返回超级视图的边界,这就是它返回整个屏幕尺寸的原因 - 我认为这是由于所呈现的视图控制器在技术上直到 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 

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2011-12-31
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多