繁体   English   中英

如何在导航弹出窗口上调整UIPopoverPresentationController的大小?

[英]How can I make UIPopoverPresentationController resize on navigation pop?

我在iOS应用程序中使用UIPopoverPresentationController进行弹出窗口。 当弹出窗口中的导航控制器推送新的视图控制器时,弹出框会调整大小到该视图控制器的preferredContentSize 但是当导航控制器将视图控制器弹出堆栈时,弹出框不会调整为以前的大小。 我该怎么做呢?

可能重复此问题 ,但对于现代UIPopoverPresentationController

更新:请参阅此处以获取说明问题的示例代码。 克隆它并在iPad模拟器中运行它。 点击“弹出”按钮,您将获得带有导航控制器的弹出窗口。 点击“推杆”按钮项,您将在堆栈上获得一个新的更高的VC(大小在导航栏中)。 流行音乐并没有将其重新调整为原来的状态。

添加此行:

self.navigationController.preferredContentSize = self.preferredContentSize;

到你的viewWillAppear:方法,现在看起来像这样:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    if (self.navigationController)
    {
        UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithTitle:@"Push" style:UIBarButtonItemStylePlain target:self action:@selector(onPush)];
        self.navigationItem.rightBarButtonItem = item;
        self.navigationItem.title = NSStringFromCGSize(self.preferredContentSize);
        self.view.backgroundColor = [UIColor lightGrayColor];

        self.navigationController.preferredContentSize = self.preferredContentSize;
    }
}

它将确保每次显示的视图控制器更改时更新导航控制器的首选大小。 我在你的示例代码上测试了它,它解决了这个问题。

只需添加ViewController下一个代码即可

- (void) viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    self.navigationController.preferredContentSize = CGSizeMake(200, self.parentViewController.childViewControllers.lastObject.preferredContentSize.height-100);
}

这是视频 希望这是你期望获得的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM