UIPopoverController可以从它的视图控制器的NIB中获取它的大小吗?

时间:2010-11-22 20:17:50

标签: ipad ios uikit interface-builder uipopovercontroller

我创建了一个使用NIB初始化的自定义视图控制器。在NIB中,我给了视图出口一个特定的大小。当我创建一个新的弹出控制器并使用我的自定义视图控制器初始化它时,我希望弹出控制器的内容区域是我在NIB中指定的视图的大小,但它似乎忽略了这个大小并使用默认的弹出控制器相反。

我知道我可以在代码中指定popover的内容区域大小,但是我不能在界面构建器中执行此操作吗?

在我的自定义视图控制器的viewDidAppear方法中,我打印出视图的边界宽度和高度,但奇怪的是它们都是0.我做错了什么?

2 个答案:

答案 0 :(得分:3)

您无法在笔尖中指定UIViewController的contentSizeForViewInPopover。我想在viewDidLoad中设置它。

您的“打印输出”代码可能是错误的。通过调用NSLog的优点很容易被绊倒。试试这种方式:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSLog(@"%@", NSStringFromCGSize(self.view.bounds.size));
}

如果这不起作用,还会发生其他事情。

答案 1 :(得分:1)

是的,您可以通过以下方式从故事板中完成:

  1. 在视图控制器中设置根视图的大小。
  2. 在视图控制器中,您可以指定一个显式大小(默认情况下会在您为视图提供大小时填充),这里有一张图片:
  3. Xcode screenshot

    警告:我现在有2个弹出窗口 - 第一个表现得非常好(甚至用插图将它放在屏幕中央),第二个我刚刚花了半天时间想知道为什么它的正确宽度和错误的高度.... grrrr,如果你没有设置箭头方向那么奇怪的东西就会发生。