iOS显示工具栏按钮项底部的Popover
我有一个iOS显示工具栏按钮项底部的Popover,ios,objective-c,uipopovercontroller,uibarbuttonitem,uipopover,Ios,Objective C,Uipopovercontroller,Uibarbuttonitem,Uipopover,我有一个UIPopoverController,它使用以下方法显示UIViewController: [self.popover presentPopoverFromBarButtonItem:self.infoBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; self
UIPopoverController
,它使用以下方法显示UIViewController
:
[self.popover presentPopoverFromBarButtonItem:self.infoBarButtonItem
permittedArrowDirections:UIPopoverArrowDirectionUp
animated:YES];
self.popover
是我的UIPopopOvercontroller
<代码>工作正常,但Popover箭头在<代码> BButton项目中间>如何用箭头“按钮”下显示Popover?< /P>
这就是它当前的样子:我的建议是使用以下方法:
presentPopoverFromRect:inView:permittedArrowDirections:animated:
并给它一个合适的CGRect,使UIPopoverController
显示在您想要的地方
然后,您可以确切地指定希望popover起源和指向的位置。这不是一个理想的情况,但是当要给popover控制器一个uibarbuttoneim
时,您无法决定它应该如何使用它来定位自身。这怎么样
UIBarButtonItem *item = self.infoBarButtonItem ;
UIView *view = [item valueForKey:@"view"];
if(view){
CGRect frame=view.frame;
[self.popover presentPopoverFromRect:frame
inView:view.superview
permittedArrowDirections:UIPopoverArrowDirectionUp
animated:YES];
}
在“信息”按钮的选择器方法中尝试以下操作:
[self.popover presentPopoverFromRect:[(UIButton *)sender frame]
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionUp
animated:YES];
希望这对你有帮助 在iOS 9中,您可以尝试以下代码:
let alert = UIAlertController(title: "title", message: "message", preferredStyle: UIAlertControllerStyle.ActionSheet)
alert.modalPresentationStyle = UIModalPresentationStyle.Popover
alert.popoverPresentationController?.barButtonItem = sender
presentViewController(alert, animated: true, completion: nil)
适用于所有使用
UIViewController
和PopoverPresentationController
(iOS 9+)的用户;
这对我很有用:
您可以像这样直接设置您的UIBarButtonItem
myPopoverPresentationController?.barButtonItem = myUIBarButtonItem
这可以通过使用此代码来完成 在Swift中
if UIDevice.current.userInterfaceIdiom == .pad {
let item = self.navigationItem.rightBarButtonItem;
let view = item?.value(forKey: "view")
let popPresenter = alert.popoverPresentationController
popPresenter?.sourceView = view
popPresenter?.sourceRect = view.bounds
}
present(alert, animated: true, completion: nil)
在Objective-C中
if([[UIDevice currentDevice]userInterfaceIdiom]== UIUserInterfaceIdiomPad) {
UIBarButtonItem *item = self.navigationItem.rightBarButtonItem;
UIView *view = [item valueForKey:@"view"];
UIPopoverPresentationController *popover = alert.popoverPresentationController;
if(view){
popover.sourceRect = view.frame;
popover.sourceView = view;
}
}
你如何得到一个UIBarbuttonite的框架?嘿,欢迎来到Stack Overflow!别忘了用4个空格的缩进格式化代码段,使其看起来更漂亮。@StudentDon’对不起,这是UIAlertController。答案已编辑。它是
UIBarButtonItem
,而不是UIButton