0

我有一个弹出框,其中包含一个UITableView. 在情节提要中,我将弹出框高度设置为适合整个表格,并且显示效果很好。但是,在某些情况下,我需要显示更少的单元格,在这些情况下,我想更改弹出框的高度。我这样做:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated]; 
    if (trimFourCells) {  // reduce the popover's height by that of four cells
        CGSize size = self.contentSizeForViewInPopover;
        size.height -= 4*60;
        self.contentSizeForViewInPopover = size;
    }
}

它工作得很好,除了变化是动画的:首先显示完整尺寸,然后在大约一秒钟内缩小。

我的问题是是否可以禁用此动画。

我试图通过NO[super viewDidAppear:animated]甚至试图在改变尺寸后移动那条线。它并没有阻止动画。然后我尝试将代码移动到viewWillAppear,这甚至没有改变高度。

4

2 回答 2

2

感谢@frowing,这是解决方案。不必在弹出框的代码中更改大小,而是必须在调用者中完成。我已将如下代码添加到prepareForSegue

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    UIPopoverController *pc = ((UIStoryboardPopoverSegue*)segue).popoverController;
    if (trim_nCells > 0) { // trim that many cells from the table
        CGSize size = pc.contentViewController.contentSizeForViewInPopover;
        size.height -= trim_nCells * cellHeight;
        [pc setPopoverContentSize:size animated:NO];
    }
    (... rest of the prep code ...)
}

注意,由于是在显示之前完成的,所以没有涉及到动画,所以animated:param的值是没有作用的。

于 2012-07-18T19:53:07.173 回答
1

只需使用

- (void)setPopoverContentSize:(CGSize)size animated:(BOOL)animated

像这样:

[popoverController setPopoverContentSize:size animated:NO];
于 2012-07-17T19:32:04.490 回答