UIPopoverController - 支持iOS 7和8

时间:2015-03-31 15:35:30

标签: ios uipopovercontroller

我的客户端要求iOS 7和8都支持带有嵌入式UINavigationController的传统UIPopoverViewController。我总体上遇到了很多困难,我想知道其他人是否有更多的成功在这方面。

我使用了以下做法的组合:

  • setPopoverContentSize:,似乎只在iOS 7上受支持。我只在iOS 7设备上指定此内容。

  • preferredContentSize presentingViewController.presentedViewController的{​​{1}}属性,似乎只在iOS 8上受支持。

在iOS 7上,由于导航控制器推动视图,似乎会出现一些不稳定的大小调整。我认为这个大小可能是由XIB本身推断的:( ...

在iOS 7支持方面是否可能缺少某些内容?

2 个答案:

答案 0 :(得分:0)

正如今早从另一篇文章中暗示的那样,我在错误的时间设置上述参数 - 将它们移动到viewDidLayoutSubviews导致问题的合理解决方案。 iOS 7和iOS之间的布局仍然不完全一致。 8,但它现在足够接近。

答案 1 :(得分:0)

我使用此代码来呈现一个嵌入了navcontroller的popover。据我所知,它在iOS 5-8上完全相同。代码是从NavBar中的按钮调用的,所以我不必担心在错误的时间设置它。我在#defines中设置了POPOVER_WIDTH和POPOVER_HEIGHT,因为我有几个弹出窗口,我希望它们都是一样的。

if (self.myPopoverController == nil) {

        SettingsTableViewController *svc = [[SettingsTableViewController alloc]
                                            initInManagedObjectContext:self.mObjContext
                                            withScoreKeeper:self.scoreKeeper
                                            withWordList:self.wordList];

        UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:svc];
        navController.delegate = self;
        UIPopoverController *popover =  [[UIPopoverController alloc] initWithContentViewController:navController];
        popover.delegate = self;
        popover.popoverContentSize = CGSizeMake(POPOVER_WIDTH, POPOVER_HEIGHT);
        self.myPopoverController = popover;
        [svc setPopover:popover];
   // }
}
[self.myPopoverController presentPopoverFromBarButtonItem:buttonPressed permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];