popoverContentSize在iOS 8中没有响应

时间:2014-07-16 05:37:26

标签: ios objective-c ipad

我有一段代码如下: self.popOverController.popoverContentSize = CGSizeMake(248.0,216.0);

这在iOS 7及更低版本中运行良好。但是,它不响应iOS 8中的CGSizeMake。无论CGSizeMake()中指定的值是什么,它都采用相同的默认大小。

请回复替代代码。

1 个答案:

答案 0 :(得分:8)

采取两个步骤来解决这个问题

第一步:

作为即时修复,您可以设置UIViewController的preferredContentSize属性

[popoverViewController setPreferredContentSize:CGSizeMake(248.0,216.0)]; 
在初始化UIPopoverController

之前

UIPopoverController *popoverController = [[UIPopoverController alloc]initWithContentViewController:popoverViewController];

第二步:

在iOS8中,UIPopoverPresentationController被引入作为UIPopoverController

的替代品
if ([popoverViewController respondsToSelector:@selector(popoverPresentationController)]) {
   popoverViewController.modalPresentationStyle = UIModalPresentationPopover;
   [popoverViewController setPreferredContentSize:CGSizeMake(248.0,216.0)];

   UIPopoverPresentationController *popoverPresentation = popoverViewController.popoverPresentationController;
   [popoverPresentation setSourceView:_sourceView];
   [popoverPresentation setSourceRect:_sourceRect];
   [popoverPresentation setPermittedArrowDirections:UIPopoverArrowDirectionUp];

   [self presentViewController:popoverViewController animated:YES completion:nil];
} else {
   //existing code...
}

截至目前,pre-release documentation可供进一步参考。