如何使 UIPopoverPresentationController 在弹出导航时调整大小?
How can I make UIPopoverPresentationController resize on navigation pop?
我在 iOS 应用程序中使用 UIPopoverPresentationController
作为弹出窗口。当弹出窗口中的导航控制器推送新的视图控制器时,弹出窗口的大小会调整为该视图控制器的 preferredContentSize
。但是当导航控制器从堆栈中弹出一个视图控制器时,弹出窗口不会调整到以前的大小。我怎样才能做到这一点?
可能与 this question 重复,但对于现代 UIPopoverPresentationController
。
更新: 请参阅 here 说明问题的示例代码。克隆它并 运行 在 iPad 模拟器中。点击 Popover 按钮,你会得到一个带有导航控制器的弹出窗口。点击 Push bar button item,你会在堆栈上得到一个新的更高的 VC(尺寸在导航栏中)。弹出,它不会调整回原来的大小。
只需添加您的 ViewController
下一个代码
- (void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.navigationController.preferredContentSize = CGSizeMake(200, self.parentViewController.childViewControllers.lastObject.preferredContentSize.height-100);
}
这里是video。希望这是您期望得到的行为。
添加这一行:
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;
}
}
它将确保每次显示的视图控制器更改时更新导航控制器的首选大小。我在您的示例代码上对其进行了测试,它解决了问题。
我在 iOS 应用程序中使用 UIPopoverPresentationController
作为弹出窗口。当弹出窗口中的导航控制器推送新的视图控制器时,弹出窗口的大小会调整为该视图控制器的 preferredContentSize
。但是当导航控制器从堆栈中弹出一个视图控制器时,弹出窗口不会调整到以前的大小。我怎样才能做到这一点?
可能与 this question 重复,但对于现代 UIPopoverPresentationController
。
更新: 请参阅 here 说明问题的示例代码。克隆它并 运行 在 iPad 模拟器中。点击 Popover 按钮,你会得到一个带有导航控制器的弹出窗口。点击 Push bar button item,你会在堆栈上得到一个新的更高的 VC(尺寸在导航栏中)。弹出,它不会调整回原来的大小。
只需添加您的 ViewController
下一个代码
- (void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.navigationController.preferredContentSize = CGSizeMake(200, self.parentViewController.childViewControllers.lastObject.preferredContentSize.height-100);
}
这里是video。希望这是您期望得到的行为。
添加这一行:
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;
}
}
它将确保每次显示的视图控制器更改时更新导航控制器的首选大小。我在您的示例代码上对其进行了测试,它解决了问题。