私のユニバーサル アプリは、設定画面に NIB を使用しています。iPhone と iPad の両方で同じ NIB を使用したいと考えています。
したがって、iPad では、MainViewController で UIPopoverController を使用し、設定については、単に iPhone サイズの NIB を表示して、SettingsViewController と呼ばれるものを表示します。ポップオーバーのサイズは 320x460 ポイントです。
これは問題を引き起こします。これは、iPhone バージョンではプログラムによってステータス バーの上に多くのものを描画するためです。iPad バージョンではこれは必要ありません。iPadの現状:
ご覧のとおり、「設定」タイトルの上に大きな空白があります。したがって、私が望むのは、ポップオーバー内でビューコントローラーを約20ポイント上に移動することです:
ポップオーバーは、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];
}
これにより、コンテンツが少し上に移動することはありません。どうやって行くの?
明確にするために:ポップオーバーが表示する「ビューポート」を下に移動したい。