contentSize用于在IOS 4和IOS5中以不同高度查看Popover

时间:2012-04-24 10:45:50

标签: iphone ios uipopover contentsize

enter image description here

enter image description here

您好, 我有UITableView,其中包含嵌入在UIScrollView中的静态内容 所以我只是在popover中设置了大小:

- (CGSize)contentSizeForViewInPopover
{    
    return CGSizeMake(600, 670);
}

但是,我有不同的弹出高度(见附件)。在IOS4.3中,高度比IOS5大。 我不想检查IOS版本并增加/减少高度。

请建议。

由于

2 个答案:

答案 0 :(得分:0)

您可以根据工作台视图的高度动态计算弹出框的高度,并覆盖contentSizeForViewInPopoverView,如下所示:

- (CGSize)contentSizeForViewInPopoverView {
    CGFloat width = 200.0; // Currently no way to obtain the width dynamically, only height.
    CGRect rect = [self.tableView rectForSection:[self.tableView numberOfSections] - 1];
    CGFloat height = CGRectGetMaxY(rect);
    return (CGSize){width, height};
}

这假设您有1个部分。如果您有更多内容,则只需使用rectForSection确定每个部分的高度并添加它们。

答案 1 :(得分:0)

据我所知,当使用导航控制器作为弹出式内容时,你必须

  1. 在根控制器(或任何显示为第一个控制器的人)上设置contentSizeForViewInPopover。 (不要试图在导航控制器上设置尺寸。)

  2. 无论何时推送/弹出控制器,并且希望更改堆栈上新控制器的弹出框大小,请显式调用setPopoverContentSize:animated:UINavigationControllerDelegate对此有好处。