我有一个包含UITableView
的弹出窗口。在故事板中,我将弹出高度设置为适合整个表格,并且显示效果很好。但是,在某些情况下,我需要显示更少的单元格,在这种情况下,我想更改弹出窗口的高度。我这样做是这样的:防止contentSizeForViewInPopover动画
- (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
,那甚至没有改变高度。
谢谢@frowing。这解决了这个问题,但引入了闪烁的新问题。弹出窗口显示为全尺寸,然后一秒钟后调整大小。我试图通过在调整大小后移动'[super viewDidAppear:animated]'行来解决这个问题,但它没有帮助。 我假设在调用' - (void)viewDidAppear:(BOOL)animated'时,弹出窗口已经显示完整大小,因此必须事先进行任何大小调整。 – cshavit 2012-07-17 20:24:46
在显示弹出窗口之前设置内容大小。从'viewDidAppear:'方法中移除调整大小的代码。 – 2012-07-18 07:21:11
谢谢@frowing。我将代码从'viewDidAppear:'移到'viewWillAppear:'。我试图把它放在'[super viewWillAppear:animated];'行之后,然后在这行之后。在这两种情况下都没有发生调整。看起来'setPopoverContentSize:(CGSize)大小动画:(BOOL)动画' 在'viewWillAppear:'内调用时没有效果。同样,直接在'viewWillAppear:'中设置控制器的大小,如'ctrl.popoverContentSize = size;'没有效果。当然,我错过了一些东西,因为在弹出窗口显示之前我找不到调整方式。我只能在调整后重新调整。 – cshavit 2012-07-18 14:18:15