我有一段代码如下:
self.popOverController.popoverContentSize = CGSizeMake(248.0, 216.0);
在iOS 7及以下版本中这段代码可以正常工作。但是,在iOS 8中,它无法响应CGSizeMake的值,无论指定什么值,都采用相同的默认大小。
请回复一个替代代码。
我有一段代码如下:
self.popOverController.popoverContentSize = CGSizeMake(248.0, 216.0);
在iOS 7及以下版本中这段代码可以正常工作。但是,在iOS 8中,它无法响应CGSizeMake的值,无论指定什么值,都采用相同的默认大小。
请回复一个替代代码。
解决此问题需要两个步骤:
第一步:
作为一个快速解决方案,您可以设置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...
}
截至目前,预发布文档可供进一步参考。