手动设置UIPoverover箭头的方向和位置

问题描述 投票:8回答:4

我正在使用UIBarButtonItem。在我的方案中,我想在双击每个条形按钮时显示一个弹出式窗口。因此,我从该UIBarButtonItem使用UITapGesture。但是,弹出箭头始终出现在所有UIBarButtonItem的中间。

我无法使箭头出现在每个条形按钮的中间。我的朋友告诉我使用点设置箭头方向,但是我不知道该怎么做。

如何设置弹出箭头的位置和方向?

ios objective-c uipopovercontroller uibarbuttonitem
4个回答
12
投票

使用以下方法设置弹出框的方向:

[yourPopover setPopoverArrowDirection: UIPopoverArrowDirectionDown];

您也可以使用UIPopoverArrowDirectionUpUIPopoverArrowDirectionLeftUIPopoverArrowDirectionRightUIPopoverArrowDirectionAny

对于Swift

yourPopover?.permittedArrowDirections = .up // or .down, .left, .right

14
投票

我使用方法permittedArrowDirections = .Down,它对我有用。 Swift示例:

if let popoverPresentationController = shareViewController.popoverPresentationController {
    popoverPresentationController.permittedArrowDirections = .Down
    popoverPresentationController.delegate = self
    popoverPresentationController.sourceView = sender as! UIButton
    popoverPresentationController.sourceRect = CGRectMake(0, 0, sender.frame.size.width, sender.frame.size.height)
}

0
投票

如果使用的是IBAction方法,则可以使用(id)sender作为其参数。 (即调用按钮),然后可以将弹出框的附件矩形设置为按钮的框架。箭头将尽最大努力在适当的位置沿该框架的侧面连接。参见UIPopoverController Class Reference

-(IBAction)sortButtonPressed:(id)sender {
  // Set up your popover class, this varies per your implementation
  MyPopoverClass *iPop = [[MyPopoverClass alloc] initWithNibName:@"MyPopover" bundle:nil];
  UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:iPop];

  // Grab the button info from the input parameter
  UIButton *button = (UIButton *)sender;
  CGRect buttonRectangle = button.frame;

  // Set the arrow direction
  UIPopoverDirection dir = UIPopoverArrowDirectionAny; // Or Up, Down, etc.

  // Put it all together
  [popover presentPopoverFromRect:buttonRectangle inView:mySubView permittedArrowDirections:dir animated:YES];

  [popover release]
  [iPop release];
}

如果需要,您也可以手动对CGRect进行硬编码。缩小矩形的宽度/高度将使您可以更紧密地控制箭头的位置。


0
投票

您可以在Storyboard Segue的属性检查器中设置箭头的方向。例如,我仅在以下屏幕截图中将箭头方向设置为向下:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.