是否有可能在没有任何箭头指向某处的情况下呈现弹出窗口?
答案 0 :(得分:99)
是的,可以这样做:
[self.popoverController presentPopoverFromBarButtonItem:anItem
permittedArrowDirections:0
animated:YES];
零表示没有方向。
答案 1 :(得分:22)
对于iPhone和swift 2.0试试这个
启动弹出窗口的代码
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
}
答案 2 :(得分:8)
将permittedArrowDirections
设置为0。
permittedArrowDirections:0
代码 -
[self.popoverController presentPopoverFromBarButtonItem:anItem
permittedArrowDirections:0
animated:YES];
零告诉“NoDirection”。
答案 3 :(得分:7)
Swift3 ,此代码适用于我
popover.permittedArrowDirections = .init(rawValue: 0)
答案 4 :(得分:4)
Swift4 :
popover.permittedArrowDirections = []
答案 5 :(得分:4)
对于 Swift 2.0
和iOS9
,解决方案是:
popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection()
答案 6 :(得分:4)
试试这个,它对我有用。
[self.popoverViewController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:0 animated:YES];
答案 7 :(得分:3)
这对我来说很好。
[popoverController presentPopoverFromRect:CGRectMake(0, 0, 20, 20)
inView:self.view
permittedArrowDirections:NULL
animated:YES];
享受编码。
答案 8 :(得分:2)
在我的案例中为快速开发人员
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);
答案 9 :(得分:2)
在Swift中,你可以做到:
popoverPresentationController.permittedArrowDirections = []
由于您可以使用其他配置:
popoverPresentationController.permittedArrowDirections = [.up, .down]
答案 10 :(得分:2)
不,没有UIPopoverArrowDirectionNone
选项,而UIPopoverArrowDirectionUnknown
会抛出异常,我想如果您尝试使用它来呈现。
您可以调用presentModalViewController:animated:
而不是弹出控制器,并将您呈现的控制器设置为模式演示样式UIModalPresentationFormSheet
或UIModalPresentationPageSheet
。那些比popovers更传统的弹出屏幕。
答案 11 :(得分:1)
我根据触摸坐标使用popover显示菜单。 在这种情况下,popover使用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];
希望这会有所帮助:Help with UIPopOverController size
答案 12 :(得分:1)
如果您不想显示箭头,请不要使用Popovers。将视图控制器显示为模态并改为使用UIModalPresentationFormSheet。
示例:
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MyStoryBoard" bundle:nil];
UIViewController* viewController = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
viewController.modalPresentationStyle = UIModalPresentationFormSheet;
[presenterViewController presentViewController: viewController animated:YES completion:^{
}];
答案 13 :(得分:1)
试试这个
[popOverController presentPopoverFromRect:CGRectMake(0, 0, 30, 40) inView:popOverContentView permittedArrowDirections:0 animated:NO];
答案 14 :(得分:1)
在swift 3中,您可以为此构建UIPopoverArrowDirection
扩展名:
extension UIPopoverArrowDirection {
public static var noArrow: UIPopoverArrowDirection {
return UIPopoverArrowDirection(rawValue: 0)
}
}
你可以这样做:
popoverPresentationController!.permittedArrowDirections = .noArrow
答案 15 :(得分:0)
要使方向无弹出并使其显示在视图控制器的中心:
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()
答案 16 :(得分:-2)
SWIFT中的一个简单解决方案:
popover!.permittedArrowDirections = nil