3

我的问题类似于这个 < question > ,其中 OP 的目标是将 UIBarButtonItems 数组显示为 navigationItem.rightBarButtonItems 而没有 barbuttons 的轮廓/边框。他的解决方案,使用 UIButton 自定义视图初始化 UIBarButtonItem,给出了所需的外观,并且 UIButton 目标/操作模式适用于调用方法,但不适用于定位 UIPopoverController。

我要做的是在弹出窗口中显示一个 actionSheet(即在 iPad 上显示一个 actionSheet),并且(从不同的按钮)显示一个打印控制器弹出框,弹出框箭头指向选定的栏按钮,作为 rightBarButton iPad Mail 应用程序中的项目。

问题是,呈现 actionSheet 或弹出框的方法:

[UIActionSheet showFromBarButtonItem:bbtn animated:YES];

或者

[UIPrintInteractionController presentFromBarButtonItem:printButton animated:YES completionHandler:completionHandler]

使用 UIButton 发送方调用时不起作用。此外,从 CGRect 呈现的方法,例如

[controller presentFromRect:rect inView:self.view animated:YES completionHandler:completionHandler]

不要正确定位弹出指针。

我尝试使用UIView convertRect:toView:转换后的矩形转换按钮框架并显示弹出框,但我要么做错了,要么无法从没有框架属性的 UIBarButtonItem 超级视图正确转换。显示弹出框,但弹出框箭头未指向所选按钮。

4

2 回答 2

2

尝试在导航控制器的视图坐标中计算转换后的按钮框架。例如

CGRect convertedRect = [self.navigationController.view convertRect:button.bounds fromView:button];
[controller presentFromRect:convertedRect inView:self.navigationController.view animated:YES completionHandler:completionHandler];
于 2013-02-21T19:54:34.640 回答
0

我和你有完全相同的问题。我发现的一种解决方案是使用完全透明的图像作为 UIBarButton 项的背景。

UIBarButtonItem *button = [[BWBarButton alloc] initWithImage:[UIImage imageNamed:imageName] style:UIBarButtonItemStylePlain target:target action:selector];

[button setBackgroundImage:[UIImage imageNamed:@"barimage"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

barimage是一个 60x60 的透明图像。我认为您可以使用 1x1px 图像。

祝你好运!

于 2013-07-26T11:11:33.127 回答