7

我有一个特殊的应用程序,由于导航结构,我无法使用具有半透明效果的普通 UINavigationBars,因此我选择尝试使用 iOS8 的 UIVisualEffectView 和 Blur。

这个解决方案大部分都有效,但是当这个模糊视图下方的 UITableView 滚动时会出现非常明显的闪烁效果。当图像或彩色矩形的边缘通过模糊视图下方时,会发生大量闪烁。

有没有人经历过这个?有谁知道如何解决这个问题?

我的实现很简单,我将 UIVisualEffectView 拖到我的视图控制器上,并将其限制在上、左和右屏幕边界,并添加了 64 的高度限制。下面只是一个带有一些图像和文本的 UITableView。

4

2 回答 2

1

“我假设在计算模糊时没有考虑不在视图下的内容。它很可能是外推的(通过镜像、复制、包装等来填充图像……就像你会做的那样,以最大限度地减少对任何卷积的边界影响). 但这在许多情况下会产生不希望的视觉跳跃。

如果你想最小化这个工件,只需让 UIVisualEffectView 比你的视图大。几个像素就足够了,反正模糊内核也没那么大。并让您的视图裁剪到边界。”

参考:https ://medium.com/@imho_ios/avoid-artifacts-on-uiblureffect-edges-c30e737c21fb

这对我有用,至少消除了导航栏中的底部闪烁。但是,它在顶部不起作用。我相信这是由于视图(可能是 UIWindow?)对 - 在我的情况下 - tableView 进行裁剪。

更新: 似乎该错误已在 iOS 9.0 及更高版本中修复。

于 2015-10-15T19:47:10.647 回答
0

我制作了一个 alpha 为 0 的 uiview 并添加了 blurview 作为它的子视图。所以我可以最小化闪烁问题,也可以用动画隐藏/显示或圆角它。

于 2015-12-02T07:37:28.710 回答