在UIPopoverController中移动框架

时间:2013-08-21 15:06:49

标签: ios ipad nib

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

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

这会导致问题,因为iPhone版本以编程方式在状态栏上方绘制了许多内容,而对于iPad版本则不需要这样做。 iPad目前的情况:

enter image description here

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

enter image description here

popview在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];
}

这不会使内容有所改变。怎么去?

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

1 个答案:

答案 0 :(得分:-1)

尝试:

myPopover.autoresizingMask=UIViewAutoresizingNone;

或者:

myPopover.autoresizingMask=UIViewAutoresizingFlexibleHeight || UIViewAutoresizingFlexibleWidth;

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

popover.popoverLayoutMargins=UIEdgeInsetsMake (
CGFloat 50, //top
CGFloat 50,//left
CGFloat 50,//bottom
CGFloat 50//right
);