UIPopoverController 奇怪的调整大小行为

Posted

技术标签:

【中文标题】UIPopoverController 奇怪的调整大小行为【英文标题】:UIPopoverController strange resize behavior 【发布时间】:2012-07-06 10:13:19 【问题描述】:

我使用 UINavigationController 为 iPhone 开发了一个静态库并推送了一些 UIViewController。

我正在实施一种方法,允许 ipad 开发人员将我的库包含到他们的 iPad 应用程序中。为此,我想在大小为 iphone 的 UIPopoverController 中显示我的库控制器。

这是我开发的,但是每次我推送一个新的 viewController 时,Popover 都会以一种非常奇怪的方式调整自己的大小:

我已经检查了我的视图控制器(通过界面生成器),并且自动调整大小行为已停用。

有人有办法吗?

【问题讨论】:

【参考方案1】:

UIPopoverViewController显示的UIViewController需要设置这个属性:

contentSizeForViewInPopover

表示其显示大小,UIPopoverViewController 将根据该属性的值调整大小。例如:

- (void)viewDidLoad

    [super viewDidLoad];
    self.contentSizeForViewInPopover = self.view.frame.size;
    // Do any additional setup after loading the view from its nib.

【讨论】:

谢谢,没想到这么简单! ios7 及更高版本开始,此属性已被弃用。请改用preferredContentSize。【参考方案2】:

据我了解您的问题,每当您将控制器推送到 UINavigationControllerUIPopoverController 的根控制器)时,弹出框都会调整大小。我不能说为什么会发生这种情况,但是您可以通过将 popoverController 的引用(popoverControllerReference,您可以创建单例引用)发送到您的视图控制器并在您推送控制器时手动设置 popoverContentSize 来摆脱它:@987654325 @

【讨论】:

是的,我试过了,但即使我在 wiewWillAppear 方法中手动调用 popoverContentSize,它总是在 UIVewController 以错误的大小调用它之前。【参考方案3】:

接受的答案使用现在在 iOS 7.0 中已弃用的方法。

我遇到了同样的问题,并成功使用了 popoverContentSize。

以下内容:

[_popoverSegue.popoverController setPopoverContentSize:CGSizeMake(320.0f, 460.0f)];

其中 _popoverSegue 是 UIStoryboardPopoverSegue 的一个实例

希望这对未来的访客有所帮助...

(对不起,我可能应该评论接受的答案,但我没有足够的声誉......)

【讨论】:

以上是关于UIPopoverController 奇怪的调整大小行为的主要内容,如果未能解决你的问题,请参考以下文章

调整大小后调整 UIPopoverController 位置

UIPopoverController 的奇怪错误

iOS 7 上的 UIPopoverController 和键盘导致奇怪的动画

当键盘出现时,UIPopoverController 在 iOS 7 上奇怪地移动

当我调整它的大小时 UIPopoverController 移动

UIPopoverController 的大小调整行为在 iOS 7.0 和 iOS 7.1 之间有所不同