没有任何箭头的 UIPopover

发布于 2024-09-12 21:28:26 字数 32 浏览 9 评论 0原文

是否可以呈现一个没有任何指向某处的箭头的弹出窗口?

Is it possible to present a popover without any sort of arrows pointing somewhere?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(17

命比纸薄 2024-09-19 21:28:27

就我而言,对于快速开发人员来说

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);

In my case for swift developers

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);
坚持沉默 2024-09-19 21:28:27

不,没有 UIPopoverArrowDirectionNone 选项,并且 UIPopoverArrowDirectionUnknown 会抛出异常,我认为如果您尝试使用它来呈现。

您可以调用 presentModalViewController:animated: 并将要呈现的控制器设置为具有 UIModalPresentationFormSheetUIModalPresentationPageSheet 模式呈现样式,而不是弹出窗口控制器。代码>.这些是比弹出窗口更传统的弹出屏幕。

Nope, there is no UIPopoverArrowDirectionNone option, and UIPopoverArrowDirectionUnknown throws an exception i think if you try to use that to present.

Instead of a popover controller, you can call presentModalViewController:animated: and set the controller you are presenting to have a modal presentation style of UIModalPresentationFormSheet or perhaps UIModalPresentationPageSheet. Those are more traditional popup screens than popovers are.

无远思近则忧 2024-09-19 21:28:27

这对我来说效果很好。

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

享受编码。

This works fine for me.

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

Enjoy Coding.

抱着落日 2024-09-19 21:28:27

如果您不想显示箭头,请不要使用 Popovers。将视图控制器呈现为 Modal 并使用 UIModalPresentationFormSheet 代替。

例子:

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

}];

Do not use Popovers if you don't want to show arrows. Present your view controller as a Modal and use a UIModalPresentationFormSheet instead.

Example:

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

}];
揽月 2024-09-19 21:28:27

试试这个

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

Try this one

[popOverController presentPopoverFromRect:CGRectMake(0, 0, 30, 40) inView:popOverContentView permittedArrowDirections:0 animated:NO];
氛圍 2024-09-19 21:28:27

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

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

但是当我使用 0 方向时。弹出框矩形不会将其高度设置为最大值,只能通过适当的属性进行设置。

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

希望这会有所帮助:有关 UIPopOverController 大小的帮助

I use popover to show menu depending on touch coordinate.
In this case popover uses maximum height of self.view

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

But when I use 0-direction. Popover rectangle doesn't set it height to maximum and can only be set by appropriate property.

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

Hope this will help: Help with UIPopOverController size

携君以终年 2024-09-19 21:28:27

要使弹出方向无并使其出现在视图控制器的中心:

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()

To make a pop over direction none and make it to appear in center of the view controller :

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()
随波逐流 2024-09-19 21:28:27

SWIFT 中的一个简单解决方案:

popover!.permittedArrowDirections = nil

A simple solution in SWIFT:

popover!.permittedArrowDirections = nil
清风无影 2024-09-19 21:28:26

是的,可以这样做:

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

零代表没有方向。

Yes it is possible just do:

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

The zero represent no direction.

↙厌世 2024-09-19 21:28:26

对于 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
}

For iPhone and swift 2.0 try this one

Code to initiate 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)
}

And add this to your ViewController

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
    return UIModalPresentationStyle.None
}
千仐 2024-09-19 21:28:26

Swift4

popover.permittedArrowDirections = []              

Swift4:

popover.permittedArrowDirections = []              
薄荷梦 2024-09-19 21:28:26

permissedArrowDirections 设置为 0。

permittedArrowDirections:0

代码 -

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

零表示“NoDirection”。

Set the permittedArrowDirections to 0.

permittedArrowDirections:0

Code -

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

Zero tells "NoDirection".

迷乱花海 2024-09-19 21:28:26

Swift3,这段代码对我有用

popover.permittedArrowDirections = .init(rawValue: 0)

Swift3, this code work for me

popover.permittedArrowDirections = .init(rawValue: 0)
霊感 2024-09-19 21:28:26

对于 Swift 2.0iOS9 解决方案是:

popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection()

For Swift 2.0 and iOS9 the solution is:

popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection()
难以启齿的温柔 2024-09-19 21:28:26

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

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

并且您可以执行以下操作:

popoverPresentationController!.permittedArrowDirections = .noArrow

In swift 3, you can build a UIPopoverArrowDirection extension for this:

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

and the you can do:

popoverPresentationController!.permittedArrowDirections = .noArrow
吻泪 2024-09-19 21:28:26

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

popoverPresentationController.permittedArrowDirections = []

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

popoverPresentationController.permittedArrowDirections = [.up, .down]

In Swift, you can simply do:

popoverPresentationController.permittedArrowDirections = []

Since in another configuration you could have used:

popoverPresentationController.permittedArrowDirections = [.up, .down]
陌路终见情 2024-09-19 21:28:26

试试这个,它对我有用。

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

Try this , it works for me.

[self.popoverViewController presentPopoverFromRect:rect inView:self.view  permittedArrowDirections:0 animated:YES];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文