iOS 8中popoverContentSize无响应

8

我有一段代码如下:

self.popOverController.popoverContentSize = CGSizeMake(248.0, 216.0);

在iOS 7及以下版本中这段代码可以正常工作。但是,在iOS 8中,它无法响应CGSizeMake的值,无论指定什么值,都采用相同的默认大小。

请回复一个替代代码。

1个回答

9

解决此问题需要两个步骤:

第一步:

作为一个快速解决方案,您可以设置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...
}

截至目前,预发布文档可供进一步参考。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接