UIPopover没有任何箭头

有没有可能在没有任何箭头的地方展示一个popover?

是的,这是可能的只是做:

  [self.popoverController presentPopoverFromBarButtonItem:anItem permittedArrowDirections:0 animated:YES]; 

零代表没有方向。

对于iPhone和SWIFT 2.0试试这个

启动popover的代码

 initiatePopover(){ let popoverContent = self.storyboard?.instantiateViewControllerWithIdentifier("XYZController") as! XYZController let nav = UINavigationController(rootViewController: popoverContent) nav.modalPresentationStyle = UIModalPresentationStyle.Popover let popover = nav.popoverPresentationController popoverContent.preferredContentSize = CGSizeMake(250 ,200) popover!.delegate = self popover!.sourceView = self.view popover!.sourceRect = CGRectMake(200,200,0,0) popover!.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0) self.presentViewController(nav, animated: true, completion: nil) } 

并将其添加到您的ViewController

 func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle { return UIModalPresentationStyle.None } 

permittedArrowDirections设置为0。

 permittedArrowDirections:0 

代码 –

 [self.popoverController presentPopoverFromBarButtonItem:anItem permittedArrowDirections:0 animated:YES]; 

零告诉“NoDirection”。

试试这个,对我有用。

 [self.popoverViewController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:0 animated:YES]; 

对于Swift 2.0iOS9 ,解决scheme是:

 popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection() 

Swift3 ,这个代码适合我

 popover.permittedArrowDirections = .init(rawValue: 0) 

这对我来说很好。

 [popoverController presentPopoverFromRect:CGRectMake(0, 0, 20, 20) inView:self.view permittedArrowDirections:NULL animated:YES]; 

享受编码。

不,没有UIPopoverArrowDirectionNone选项,并且UIPopoverArrowDirectionUnknown抛出一个exception,我想如果你尝试使用它来呈现。

您可以调用presentModalViewController:animated:来代替popover控制器,并将您正在呈现的控制器设置为具有UIModalPresentationFormSheetUIModalPresentationPageSheet的模态表示风格。 这些比弹窗更传统的popup式屏幕。

试试这个

 [popOverController presentPopoverFromRect:CGRectMake(0, 0, 30, 40) inView:popOverContentView permittedArrowDirections:0 animated:NO]; 

如果你不想显示箭头,不要使用Popovers。 以模态forms呈现视图控制器,并使用UIModalPresentationFormSheet。

例:

 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MyStoryBoard" bundle:nil]; UIViewController* viewController = [sb instantiateViewControllerWithIdentifier:@"myViewController"]; viewController.modalPresentationStyle = UIModalPresentationFormSheet; [presenterViewController presentViewController: viewController animated:YES completion:^{ }]; 

在swift 3中,可以为此构build一个UIPopoverArrowDirection扩展:

 extension UIPopoverArrowDirection { public static var noArrow: UIPopoverArrowDirection { return UIPopoverArrowDirection(rawValue: 0) } } 

你可以这样做:

 popoverPresentationController!.permittedArrowDirections = .noArrow 

我使用popover根据触摸坐标显示菜单。 在这种情况下,popup窗口使用self.view的最大高度

 CGRect popeverFrame = CGRectMake(touchPoint.x, touchPoint.y, 0, 0); [self.popover presentPopoverFromRect:popeverFrame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

但是,当我使用0方向。 Popover矩形不会将其高度设置为最大值,只能由适当的属性设置。

 CGRect popeverFrame = CGRectMake(touchPoint.x, touchPoint.y, 0, 0); [self.popover presentPopoverFromRect:popeverFrame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

希望这将有助于: 帮助UIPopOverController大小

在我的情况下,迅速的开发人员

 popoverController.sourceView = self.view popoverController.sourceRect = self.view.bounds popoverController.backgroundColor = UIColor.brownColor() popoverController.permittedArrowDirections = UIPopoverArrowDirection.init(rawValue: 0) popoverController.sourceRect = CGRectMake(width/4, hieght/4, width/2, hieght/2); 

为了使方向无popup,并使其出现在视图控制器的中心:

 let PopSrnVar = popoverPresentationController let ConRctVar = view.frame PopSrnVar!.sourceRect = CGRectMake(ConRctVar.width/4, ConRctVar.height/4, ConRctVar.width/2, ConRctVar.height/2) // To make arrows as none PopSrnVar!.permittedArrowDirections = UIPopoverArrowDirection() 

SWIFT的简单解决scheme:

 popover!.permittedArrowDirections = nil