Ios 如何设置已在iPad中显示的popover视图控制器框架?

Ios 如何设置已在iPad中显示的popover视图控制器框架?,ios,objective-c,ipad,frame,uipopovercontroller,Ios,Objective C,Ipad,Frame,Uipopovercontroller,我在表单中显示视图控制器,在单击按钮时显示popover,在popover视图控制器中显示搜索栏,当开始在搜索栏键盘中键入时显示,当父视图控制器在表单中显示时,根据其默认行为向上显示,所以需要相应地设置popover的框架,如何设置popover的框架,而它已经存在? 提前感谢。不久前,我在UIViewController上为此制作了一个分类 UIViewController+PopOver.h #import <UIKit/UIKit.h> @interface UIViewCo

我在表单中显示视图控制器,在单击按钮时显示popover,在popover视图控制器中显示搜索栏,当开始在搜索栏键盘中键入时显示,当父视图控制器在表单中显示时,根据其默认行为向上显示,所以需要相应地设置popover的框架,如何设置popover的框架,而它已经存在?
提前感谢。

不久前,我在
UIViewController
上为此制作了一个分类

UIViewController+PopOver.h

#import <UIKit/UIKit.h>

@interface UIViewController (PopOver)

- (void) forcePopoverSize;
- (void) forcePopoverSizeWithWidth:(float) width andHeight:(float) height;

@end
然后在您的
UIViewController
中,您可以调用
[self-forcepop,宽度:752.0f,高度:300.0f]f.e


让我知道它是否有效

contentSizeForViewInPopover这是ios 7中不推荐的方法,可以使用不推荐的方法吗?我更改了答案以与ios 7中的新方法保持一致,请立即尝试
#import "UIViewController+PopOver.h"

@implementation UIViewController (PopOver)

- (void) forcePopoverSize
{
    //    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    CGSize currentSetSizeForPopover = CGSizeMake(320.0f, 330.0f);
    CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, currentSetSizeForPopover.height - 1.0f);
    self.preferredContentSize = fakeMomentarySize;
    self.preferredContentSize = currentSetSizeForPopover;
}

- (void) forcePopoverSizeWithWidth:(float) width andHeight:(float) height
{
    //    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    CGSize currentSetSizeForPopover = CGSizeMake(width, height);
    CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, currentSetSizeForPopover.height - 1.0f);
    self.preferredContentSize = fakeMomentarySize;
    self.preferredContentSize = currentSetSizeForPopover;
}

@end