2

我在弹出窗口中显示内容视图时遇到了一些问题。我正在使用以下代码来设置弹出框,其中包含我从情节提要中实例化的视图控制器。我在其中展示弹出框的视图控制器位于导航控制器中:

    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];

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

我对表格视图有相同的过程,它工作得很好 - 表格适合弹出框。我还尝试设置弹出框控制器本身的大小,就像这里建议的那样。我用受影响的视图控制器的弹簧和支柱尝试了一些设置。但结果总是一样的。

现在我真的没有什么可以尝试的想法了,或者我可能做错了什么/错过了什么......帮助:(

提前致谢!

4

2 回答 2

1

TableView 会根据其放入的容器视图控制器的大小进行自我调整。这是 UITableViewController 的一个特性。当您通过 UIPopoverController 呈现 TableView 时,弹出框决定了表格的大小。

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

于 2013-04-18T16:03:35.860 回答
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];

用于重绘的方法。第一步是了解所有这些奇怪而奇妙的方法存在,第二步是找出最经济的实施方式,让它们都为你工作。

于 2014-04-06T18:16:47.340 回答