6

基本上这是两个问题:

  1. 如何删除 iPad 的弹出视图的箭头?

  2. 有什么办法可以去掉popover的黑边?

如果不可能,您能否建议在 iPad 中在屏幕顶部显示 UIView(弹出框)而没有箭头和边框(可能是浅色透明边框),好吗?多谢。

而且我不认为 ModalView 是一个合适的选择,因为它不能调整大小,也不能通过单击外部模态视图来关闭。

4

4 回答 4

7

如何删除 iPad 的弹出视图的箭头?

当调用 -presentPopoverFromBarButtonItem:permittedArrowDirections: 时,传递 0 作为第二个参数,而不是任何常量。这没有记录,但 Apple 在使用此设置时允许 App Store 中的应用程序。

于 2011-04-19T16:09:47.490 回答
7

AFIK 没有内置方法来指定“无箭头”,或者没有边框的弹出窗口。

这是一个 hack,但它基本上可以工作。在由弹出控制器管理的视图控制器的上下文中,在 viewWillAppear: 期间,获取弹出窗口并删除第一层,这是呈现箭头和边框的内容:

- (void) viewWillAppear: (BOOL) animated
{
    [super viewWillAppear: animated];

    UIView* v = self.view.superview;
    NSLog( @"%@", NSStringFromClass( [v class]) ); // this should print UIView

    v = v.superview;
    NSLog( @"%@", NSStringFromClass( [v class]) ); // this should print UIPopoverView

    [[v.layer.sublayers objectAtIndex:0] removeFromSuperlayer];
}       

我想您可以尝试添加自己的图层,以您想要的方式呈现背景/边框。

于 2011-01-21T06:11:59.257 回答
2

您无法移除弹出框周围的镀铬。您最好的选择是重新实现弹出框的想法,但使用自定义代码。

于 2011-01-21T06:01:20.270 回答
1
  • 您不能删除箭头或边框。如果您按照 TomSwift 的建议进行某种黑客攻击,则在将您的应用程序提交到 appStore 时,您将面临崩溃被苹果拒绝的风险。

  • 不过,正如 Kevin 所建议的那样,您可以实现自己的自定义弹出框,如控制器。你可以在这里找到一个开源项目:https ://github.com/werner77/WEPopover 。背景和箭头可以从那个中删除或设置为透明。

于 2011-11-09T19:51:34.737 回答