UIPopoverController如何在pushViewController上自动调整大小到最大高度?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (81)

我有一个包含UINavigationController的popover。我可以很好地显示弹出窗口,它包含navController就好了。navController包含一个tableView,当我选择一个项目时,它会创建一个新的细节视图:

     DeviceDetailViewController *detailViewController = 
[[[DeviceDetailViewController alloc] initWithNibName:@"DeviceDetailViewController" bundle:nil] autorelease];

然后我把它推到新的视图控制器上:

    [self.navigationController pushViewController:detailViewController animated:YES];

这是问题发生的时间: 推新视图之后,弹出窗口调整到iPad上可用的最大高度。

我试图将xib中所有视图的高度设置为固定高度而不是灵活。我试图明确设置popover的高度。我也尝试使用不同的视图控制器作为子视图。问题仍然存在:当新视图被推送到导航控制器时,弹出窗口自动调整到最大高度。

我认为这可能是一种蛮力方法来控制尺寸。奇怪的是,它实际上导致了一些快速的图形怪癖(就好像视图刚刚被动画一样),然后继续调整上述尺寸。

换句话说,某些东西是强制弹出达到最大高度,并且似乎所有委托方法被调用发生。

它是导航控制器吗?有没有人看过这种东西?

提问于
用户回答回答于

如此contentSizeForViewInPopoveriOS7.0使用中已弃用preferredContentSize

在你的detailViewController添加中:

- (void)viewWillAppear:(BOOL)animated {

    CGSize size = CGSizeMake(320, 480); // size of view in popover
    self.contentSizeForViewInPopover = size;

    [super viewWillAppear:animated];

}

还想添加类似于原始DeviceDetailViewController的东西,以防止在点击后面的NavbarItem时调整大小。

用户回答回答于

就像处理它一样,处理这个问题的viewWillAppear另一种方法是重写contentSizeForViewInPopover。非常简洁:

-(CGSize)contentSizeForViewInPopover
{
    return self.view.bounds.size;
}

所属标签

可能回答问题的人

  • 爸爸

    腾讯 · 客户端安全 (已认证)

    4 粉丝4 提问5 回答
  • 找虫虫

    0 粉丝0 提问5 回答
  • 不吃貓的鱼oo

    5 粉丝466 提问4 回答
  • uncle_light

    5 粉丝518 提问4 回答

扫码关注云+社区

领取腾讯云代金券