在哪里设置弹出窗口中显示的视图控制器的大小?

Posted

技术标签:

【中文标题】在哪里设置弹出窗口中显示的视图控制器的大小?【英文标题】:Where to set the size of a view controller presented in a popover? 【发布时间】:2012-10-12 18:06:03 【问题描述】:

基于 Apple 的 sample code,我的应用程序在弹出窗口中显示了一个视图控制器,它由一个条形按钮触发:

- (IBAction)configChartTapped:(id)sender 

GrowthChartConfigOneViewController *panelViewController = [[GrowthChartConfigOneViewController alloc]init];

UIPopoverController *popover = [[UIPopoverController alloc]initWithContentViewController:panelViewController];
popover.delegate = self;

// Store the popover in a custom property for later use.
self.popover = popover;

[self.popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

但是,我没有找到设置弹出框大小的方法。

问题:我应该在哪里以及如何设置弹出框及其视图控制器的大小?我可以直接在 XCode 中设置大小以使视图在情节提要中正确调整大小吗?

【问题讨论】:

【参考方案1】:

您也可以在弹出框类本身中设置它。这样,如果您允许从多个位置调用弹出框,您只需设置一次大小。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
        // Custom initialization
        self.view.backgroundColor = [UIColor redColor];
        self.contentSizeForViewInPopover = CGSizeMake(320.0, 216.0);
    
    return self;

【讨论】:

Alex,您可能必须将其移至 viewDidLoad。 ios7 Xcode 中说 contentSizeForViewInPopover 已被弃用,而是使用“preferredContentSize”,如下所示:self.preferredContentSize = CGSizeMake(630, 340);【参考方案2】:

只需给出 popovercontentsize 并确保该视图应符合如下定义的弹出框大小:

    popover = [[UIPopoverController alloc] initWithContentViewController: panelViewController];
    popover.popoverContentSize = CGSizeMake(550, 700);

【讨论】:

我可以直接在 Xcode 中设置弹出框大小吗?当我在代码中设置大小时,弹出视图具有标准视图大小,并且在情节提要中的大小不正确。【参考方案3】:

上面的答案很好,但由于我的需求略有不同,我只是想为情节提要更新它。如果您使用这样的情节提要标识符进行实例化:

CBItemViewController *addNewPayee = [self.storyboard instantiateViewControllerWithIdentifier:@"cbItemPopover"];

然后您可以在弹出框的代码中设置自定义大小,如下所示:

- (id)initWithCoder:(NSCoder *)decoder 
    if(self = [super initWithCoder:decoder]) 
        self.preferredContentSize = CGSizeMake(630, 340);
    
    return self;


【讨论】:

以上是关于在哪里设置弹出窗口中显示的视图控制器的大小?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 在弹出窗口中显示视图控制器

window.open 里的resizable=no参数在火狐里无效!有啥方法在火狐里的弹出窗不能拖动大小吗?

MFC无法运行的原因?我在MFC中加入了一个CWebBrowser的控件后,运行没有出错,但是点击运行是却没有弹出窗

javascript--自定义弹出登陆窗口(弹出窗)

百度统计 可以统计页面上的JS的弹出窗的打开次数吗? 怎么实现?

以编程方式在纵向视图中显示根控制器弹出窗口