UIPopoverController可以在屏幕上移动吗?
是否可以在屏幕上显示UIPopover控制器?
我在我的应用程序中可以稍微移动一个小视图,我希望UIPopoverController可以随它移动,而不必在每次移动时重新呈现UIPopoverController。这可能吗?UIPopoverController可以在屏幕上移动吗?
从iOS 9开始,“UIPopoverController已过时,现在将Popovers实现为UIViewController演示文稿,使用UIModalPresentationPopover和UIPopoverPresentationController的模态演示风格。
使用以下内容显示弹出窗口。您可能能够更改sourceRect和sourceView的值,但这不是API行为。
DetailViewController *detailVC = self.detailViewController;
detailVC.preferredContentSize = CGSizeMake(420, 92);
detailVC.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *presController = detailVC.popoverPresentationController;
if (presController) {
presController.delegate = detailVC;
presController.barButtonItem = self.detailButton;
presController.sourceRect = self.view.frame;
presController.sourceView = self.view;
presController.permittedArrowDirections = UIPopoverArrowDirectionAny;
}
[self presentViewController: detailVC animated:YES completion:^{
}];
取而代之的是,我建议保留对popover的视图控制器的引用,关闭popover并重新呈现。
DetailViewController *detailVC = self.detailViewController;
[self dismissViewControllerAnimated:NO completion:^{
UIPopoverPresentationController *presController = detailVC.popoverPresentationController;
if (presController) {
presController.delegate = detailVC;
presController.barButtonItem = self.detailButton;
presController.sourceRect = self.view.frame; //Update frame
presController.sourceView = self.view;
presController.permittedArrowDirections = UIPopoverArrowDirectionAny;
}
[self presentViewController: detailVC animated:NO completion:^{
}];
}];
我一直在为此投票。如果您打算为接受的答案投票,请提供帮助并发表评论。 – 2013-07-19 17:12:16
“创建你自己的”不是我要找的答案 – Loukas 2016-03-18 14:06:17
@Loukas我希望你会更喜欢这个新的答案。如果UIPopoverPresentationController没有提供所需的功能,您将不得不重新创建UIPopoverController,因为API不是很灵活。 – 2016-03-19 13:42:43
不,你不能。这不是做这件事的方法。
pover presentPopoverFromRect:
在评论中提到,但注意到
目前
你不能没有重绘代表。
您可以跟踪用户在屏幕上的触摸情况,并使用presentPopoverFromRect:
来重新显示弹出窗口。
这是值得一试的,但我想这样做可能有点贵。我相信,当你解雇它并重新实现它时,正在进行的资源分配很多,这可能会对系统造成严重的负担。 – 2011-05-07 01:35:48
这是事实,但那是一个良好的内存管理进场的地方。特别是在iPad上,你有更多的记忆可供玩耍。 – WrightsCS 2011-05-07 01:41:30
是不是'[酥料饼presentPopoverFromRect:]'为你工作? – 2011-05-06 21:54:58
现在的问题是,他是否可以移动popOver一旦提交 – Sid 2011-05-06 23:23:34
我不认为它的位置可以直接更改。但是,如果您在不打开它的情况下调用presentPopoverFromRect,它应该“移动”。 – Anna 2011-05-07 00:46:15