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】:据我了解您的问题,每当您将控制器推送到 UINavigationController
(UIPopoverController
的根控制器)时,弹出框都会调整大小。我不能说为什么会发生这种情况,但是您可以通过将 popoverController 的引用(popoverControllerReference
,您可以创建单例引用)发送到您的视图控制器并在您推送控制器时手动设置 popoverContentSize
来摆脱它:@987654325 @
【讨论】:
是的,我试过了,但即使我在 wiewWillAppear 方法中手动调用popoverContentSize
,它总是在 UIVewController 以错误的大小调用它之前。【参考方案3】:
接受的答案使用现在在 iOS 7.0 中已弃用的方法。
我遇到了同样的问题,并成功使用了 popoverContentSize。
以下内容:
[_popoverSegue.popoverController setPopoverContentSize:CGSizeMake(320.0f, 460.0f)];
其中 _popoverSegue 是 UIStoryboardPopoverSegue 的一个实例
希望这对未来的访客有所帮助...
(对不起,我可能应该评论接受的答案,但我没有足够的声誉......)
【讨论】:
以上是关于UIPopoverController 奇怪的调整大小行为的主要内容,如果未能解决你的问题,请参考以下文章
调整大小后调整 UIPopoverController 位置
iOS 7 上的 UIPopoverController 和键盘导致奇怪的动画
当键盘出现时,UIPopoverController 在 iOS 7 上奇怪地移动