没有任何箭头的UIPopover

Dav*_*Liu 52 uikit ipad uipopovercontroller

是否有可能提出一个没有任何箭头指向某个地方的弹出窗口?

Mat*_*att 101

是的,它可以做到:

 [self.popoverController presentPopoverFromBarButtonItem:anItem   
                                permittedArrowDirections:0
                                                animated:YES];
Run Code Online (Sandbox Code Playgroud)

零代表没有方向.

  • 这不适用于iOS 9.没有allZeros属性.Xcode做了自动更正,只是使用().所以UIPopoverArrowDirection()适用于iOS 9 (4认同)
  • 尝试创建UIPopoverBackground类的子类并覆盖arrowDirection getter方法.在那个方法中返回0. (2认同)

小智 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)
}
Run Code Online (Sandbox Code Playgroud)

并将其添加到ViewController中

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
    return UIModalPresentationStyle.None
}
Run Code Online (Sandbox Code Playgroud)


Aks*_*hay 9

设置permittedArrowDirections为0.

permittedArrowDirections:0
Run Code Online (Sandbox Code Playgroud)

代码 -

[self.popoverController presentPopoverFromBarButtonItem:anItem   
                                permittedArrowDirections:0
                                                animated:YES];
Run Code Online (Sandbox Code Playgroud)

零告诉"NoDirection".


Khu*_*ong 8

Swift3,这段代码对我有用

popover.permittedArrowDirections = .init(rawValue: 0)
Run Code Online (Sandbox Code Playgroud)


小智 6

Swift4

popover.permittedArrowDirections = []              
Run Code Online (Sandbox Code Playgroud)


Nun*_*ira 5

对于Swift 2.0iOS9解决方案是:

popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection()
Run Code Online (Sandbox Code Playgroud)


小智 5

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

extension UIPopoverArrowDirection {
    public static var noArrow: UIPopoverArrowDirection {
        return UIPopoverArrowDirection(rawValue: 0)
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

popoverPresentationController!.permittedArrowDirections = .noArrow
Run Code Online (Sandbox Code Playgroud)


小智 5

在 Swift 中,您可以简单地执行以下操作:

popoverPresentationController.permittedArrowDirections = []
Run Code Online (Sandbox Code Playgroud)

因为在另一种配置中,您可以使用:

popoverPresentationController.permittedArrowDirections = [.up, .down]
Run Code Online (Sandbox Code Playgroud)