我的通用应用程序使用NIB作为其设置屏幕。我想在iPhone和iPad上使用相同的NIB。
因此在iPad上,我在MainViewController中使用UIPopoverController进行设置,只显示iPhone大小的NIB,以显示所谓的SettingsViewController。弹出窗口的大小为320x460点。
这会导致问题,因为iPhone版本以编程方式在状态栏上方绘制了许多内容,而对于iPad版本则不需要这样做。 iPad目前的情况:
正如您所看到的,“设置”标题上方有一个很大的空白区域。因此,我想要的是将视图控制器向上移动约20个点,在popover内:
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];
}
这不会使内容有所改变。怎么去?
澄清:我想向下移动弹出窗口显示的“视口”。
答案 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
);