iPad:内容视图未调整大小以适应弹出窗口

时间:2013-04-18 15:44:18

标签: ios uiviewcontroller resize storyboard uipopovercontroller

我在使用popover中显示内容视图时遇到了一些麻烦。我使用以下代码设置带有视图控制器的弹出框,我从故事板中实例化。我在其中呈现弹出窗口的视图控制器位于导航控制器中:

    MyViewController *viewController =  [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];
    viewController.contentSizeForViewInPopover = CGSizeMake(382, 502);
    UIPopoverController *popover =  [[UIPopoverController alloc]initWithContentViewController:viewController];

    self.popoverController = popover; //self.popoverController is a private property of type UIPopoverController
    [self.popoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

出现问题:当我点击左侧栏按钮时,弹出窗口以正确的大小显示正确的内容,但内容视图的大小不会调整为弹出框的大小。只有内容视图的片段被弹出窗口"覆盖。是可见的。

我对表格视图采用相同的程序,这是完美的 - 表格适合弹出窗口。我还尝试设置弹出控制器本身的大小,就像建议here一样。我用受影响的视图控制器的弹簧和支柱尝试了一些设置。但结果总是一样的。

现在我的想法已经用尽了我可以尝试的东西,或者我可能做错了/缺失的东西......帮助:(

提前致谢!

2 个答案:

答案 0 :(得分:1)

TableView将自身调整为放入的容器视图控制器的大小。 这是UITableViewController的一个功能。 当您通过UIPopoverController呈现TableView时,弹出窗口将确定表的大小。

此机制不适用于所有视图,因此您还需要设置视图本身的大小。

答案 1 :(得分:0)

iOS 6和iOS 7之间存在一些变化,这意味着观看次数并不总是按预期调整大小。可以使用许多不同的方法和技术来提供期望的行为。这些包括通过自动调整掩码提供指导:

// Resizing behaviour
self.view.autoresizingMask=UIViewAutoresizingFlexibleWidth+UIViewAutoresizingFlexibleHeight;

有时需要告诉父视图调整子视图的大小。

self.view.autoresizesSubviews=YES;

此外,Matt Neuberg(iOS 7编程)告诉我们如何使用以下内容阻止内容隐藏在导航栏(和工具栏)下面:

// Stops the view going underneath the navigation bars 
self.edgesForExtendedLayout=UIRectEdgeNone;

然后是:

[self.view setNeedsLayout];

用于重绘的方法。第一步是学习所有这些奇怪而精彩的方法,第二步是找出最经济的实施方案,让它们全部为你工作。