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

时间:2012-10-12 18:06:04

标签: objective-c ios uiviewcontroller ios6 uipopovercontroller

基于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中设置大小,以便在故事板中正确调整视图大小吗?

3 个答案:

答案 0 :(得分:5)

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

- (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;
}

答案 1 :(得分:3)

只需给出popovercontentsize并确保该视图符合下面定义的popover大小:

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

答案 2 :(得分:2)

上面的答案很好,但由于我的需求略有不同,我只想更新故事板。如果您使用这样的故事板标识符进行实例化:

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

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

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

}