1

我的通用应用程序在其设置屏幕中使用 NIB。我想为 iPhone 和 iPad 使用相同的 NIB。

因此,在 iPad 上,我在 MainViewController 中使用 UIPopoverController 进行设置,只需显示 iPhone 大小的 NIB,以显示所谓的 SettingsViewController。弹出框大小为 320x460 点。

这导致了一个问题,因为 iPhone 版本以编程方式在状态栏上方绘制了许多东西,而对于 iPad 版本,这不是必需的。iPad上的现状:

在此处输入图像描述

如您所见,“设置”标题上方有一个很大的空白区域。因此,我想要的是将视图控制器向上移动大约 20 个点,在 popover 内

在此处输入图像描述

弹出框在 MainViewController 中实例化如下:

        settingsPopoverController = [[UIPopoverController alloc] initWithContentViewController:popoverNavigationController];
        settingsPopoverController.popoverContentSize = CGSizeMake(320, 460);
        settingsPopoverController.delegate = self;
        popoverNavigationController.navigationBarHidden = YES;

在 SettingsViewController 中,我将框架设置如下:

- (void)viewDidLoad
{
    self.contentSizeForViewInPopover = CGSizeMake(320, 460);
}

稍后在 SettingsViewController 中,我尝试按如下方式创建偏移量:

- (void)viewWillLayoutSubviews
{
    // shift it up
    CGRect frame = self.view.frame;
    frame.origin.y = -20;
    [self.view setFrame:frame];
}

这不会将内容向上移动一点。怎么走?

澄清一下:我想向下移动弹出窗口显示的“视口”。

4

1 回答 1

-1

尝试:

myPopover.autoresizingMask=UIViewAutoresizingNone;

或者:

myPopover.autoresizingMask=UIViewAutoresizingFlexibleHeight || UIViewAutoresizingFlexibleWidth;

您也可以尝试将代码放入-(void)viewDidLayoutSubviews方法中。如果这个答案没有帮助,请尝试 set popoverLayoutMargins(property) 而不是setFrame:例如:

popover.popoverLayoutMargins=UIEdgeInsetsMake (
CGFloat 50, //top
CGFloat 50,//left
CGFloat 50,//bottom
CGFloat 50//right
);
于 2013-08-21T15:21:12.693 回答