我有一个带有导航 Controller 和一堆 subview 的 UIPopoverController。弹出窗口的大小是在它显示之前设置的,如下所示:
[self.myPopover setPopoverContentSize:CGSizeMake(320, 500)];
这很好用。弹出窗口以调整后的大小显示。当另一个 View 被推送到导航堆栈时,弹出窗口的大小将再次设置 - 需要不同的高度 - 在 viewWillAppear 方法中:
self.contentSizeForViewInPopover = CGSizeMake(320, 700);
这也很好用。当我返回到上一个 View 时,尺寸没有改变。
我在第一个 View 的 viewWillAppear 中添加了相同的调用,但 View 没有调整大小。
在 View 之间导航时如何调整弹出窗口的大小?
最佳答案
我使用这个技巧:
- (CGSize)contentSizeForViewInPopover
{
return CGSizeMake(320, 200);
}
- (void) forcePopoverSize
{
CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f,
currentSetSizeForPopover.height - 1.0f);
self.contentSizeForViewInPopover = fakeMomentarySize;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self forcePopoverSize];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
self.contentSizeForViewInPopover = currentSetSizeForPopover;
}
关于iphone - 更改 contentSizeForViewInPopover on navigationController push on iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9717754/