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.0和iOS9 ,解决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控制器,并将您正在呈现的控制器设置为具有UIModalPresentationFormSheet或UIModalPresentationPageSheet的模态表示风格。 这些比弹窗更传统的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