UIPopoverController - 同时支持iOS 7和8
问题描述:
我的客户端要求在iOS 7和8上都支持具有嵌入式UINavigationController的传统UIPopoverViewController。我在整体上遇到了很多困难,我想知道是否有其他人在这方面取得了更大的成功。UIPopoverController - 同时支持iOS 7和8
我使用的做法如下组合:
setPopoverContentSize:
,只似乎支持iOS 7,我只在iOS 7的设备指定此。要在iOS 8.
支持iOS 7的presentingViewController.presentedViewController
preferredContentSize
属性,它似乎只具体地,一些尺寸调整靠不住似乎发生作为导航控制器推的图的结果。我认为这个尺寸可能是由XIB本身推断的:(
...
在iOS 7支持方面有可能丢失了一些东西吗?
答
从今天上午的另一篇文章中暗示,我在错误的时间设置了上述参数 - 将它们移动到viewDidLayoutSubviews中导致对问题的合理解决方案。 iOS 7 & 8之间的布局仍然不完全一致,但现在已经足够接近了。
答
我使用此代码来呈现嵌入了navcontroller的弹出窗口。据我所知,它在iOS 5-8上的工作原理完全相同。该代码是从NavBar中的按钮调用的,所以我不必担心在错误的时间设置它。我在#defines中设置了POPOVER_WIDTH和POPOVER_HEIGHT,因为我有几个popovers,我希望它们全都相同。
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];