关于设置 UIPopoverController.popoverContentSize 大小的坑

在 IOS 8 中,这样设置是没有问题的,但是在 IOS 7 中,这样的设置就会出现问题了,无论你怎样设置,popover  出来的内容框大小依然是默认的大小。

_popoverController = [[UIPopoverController alloc] initWithContentViewController:_contentViewController];

    _popoverController.delegate = self;

    _contentViewController.preferredContentSize = _contentViewController.view.bounds.size;

    [_popoverController presentPopoverFromRect:position inView:view permittedArrowDirections:UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown animated:YES];

查了一下资料,在 IOS 7 中需要把

_contentViewController.preferredContentSize = _contentViewController.view.bounds.size;

提前到

_popoverController = [[UIPopoverController alloc] initWithContentViewController:_contentViewController];

之前。这样,设置 popover 的大小就能成功生效。

tips:

1、记得不要把 _popoverController 和 _contentViewController 设置为局部变量,不然在 popover 完了之后这两个变量就被回收了,在进行其他操作的话马上就会出现 crash 了。

关于 popoverContentSize 大小的问题,stackoverflow 的参考如下:

Take two steps to solve this

Step One:

As an immediate fix, you can set preferredContentSize property of UIViewController

[popoverViewController setPreferredContentSize:CGSizeMake(248.0,216.0)]; 

before initalizing UIPopoverController

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

Step Two:

In iOS8, UIPopoverPresentationController is getting introduced as a replacement of 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...
}

As of now, pre-release documentation is available for further reference.

参考链接:http://stackoverflow.com/questions/24772933/popovercontentsize-not-responding-in-ios-8


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值