基本上这是两个问题:
如何删除 iPad 的弹出视图的箭头?
有什么办法可以去掉popover的黑边?
如果不可能,您能否建议在 iPad 中在屏幕顶部显示 UIView(弹出框)而没有箭头和边框(可能是浅色透明边框),好吗?多谢。
而且我不认为 ModalView 是一个合适的选择,因为它不能调整大小,也不能通过单击外部模态视图来关闭。
如何删除 iPad 的弹出视图的箭头?
当调用 -presentPopoverFromBarButtonItem:permittedArrowDirections: 时,传递 0 作为第二个参数,而不是任何常量。这没有记录,但 Apple 在使用此设置时允许 App Store 中的应用程序。
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];
}
我想您可以尝试添加自己的图层,以您想要的方式呈现背景/边框。
您无法移除弹出框周围的镀铬。您最好的选择是重新实现弹出框的想法,但使用自定义代码。
您不能删除箭头或边框。如果您按照 TomSwift 的建议进行某种黑客攻击,则在将您的应用程序提交到 appStore 时,您将面临崩溃和被苹果拒绝的风险。
不过,正如 Kevin 所建议的那样,您可以实现自己的自定义弹出框,如控制器。你可以在这里找到一个开源项目:https ://github.com/werner77/WEPopover 。背景和箭头可以从那个中删除或设置为透明。