UIPopoverController 的 UIView:如何去除阴影?

Posted

技术标签:

【中文标题】UIPopoverController 的 UIView:如何去除阴影?【英文标题】:UIPopoverController's UIView: How to remove shadow? 【发布时间】:2013-01-05 18:51:43 【问题描述】:

以下是我的弹出框的快照:

我有一个UIViewController(比如A),我想显示为popoverController。我还想自定义弹出框,所以我正在自定义UIPopoverBackgroundView(比如'b' - 橙色背景)。一切正常,除了在将 A.view 和 'b' 的角变圆后,我有一条矩形阴影线(从快照中它可能属于 A.view - 绿色背景)。基于UIViewUIViewController API,有什么方法可以消除该阴影。我只对删除视图左侧、顶部和右侧的黑线而不是模糊的阴影感兴趣。

我试过了:

[A.view.layer setShadowOpacity:0.0];

但没有运气。

【问题讨论】:

【参考方案1】:

在你的 UIPopoverBackgroundView 子类中,重写类方法:

+ (BOOL)wantsDefaultContentAppearance

返回NO。这可以防止绘制内部阴影,如记录的here。

【讨论】:

谢谢。它确实消除了那条线阴影,我明白我错过了什么。【参考方案2】:

在你的 layoutSubviews 方法中移除对 [super layoutSubviews] 的调用。

覆盖 wantDefaultContentAppearance 并返回 NO 对我不起作用。

【讨论】:

【参考方案3】:

您无法直接控制UIPopoverController 的阴影。您的选择是:

    滚动您自己的弹出框。 子类UIPopoverBackgroundView 并为弹出框的框架提供您自己的图形。与官方文档相反,当您将UIPopoverBackgroundView 子类化时,不会为您绘制阴影。这是一篇关于如何做到这一点的好帖子:http://blog.andrewkolesnikov.com/custom-background-color-tint-for-uipopover-64835

【讨论】:

我已经继承了 UIPopoverBackgroundView 类,如问题中所述。无论如何感谢您的回答。下面的 jrturton 回答有助于获得我想要的东西。谢谢你。

以上是关于UIPopoverController 的 UIView:如何去除阴影?的主要内容,如果未能解决你的问题,请参考以下文章

当 UIPopoverController 在屏幕上时,无法与带有 UIPopoverController 的 UISearchBar 进行交互

UIPopoverController 没有箭头?

UIPopoverController 解雇

自动旋转时出现 UIPopOverController 问题

谷歌地图风格的uipopovercontroller

UIPopoverController的使用