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