我有一个特定的应用程序,由于导航结构,让我无法使用具有半透明度的普通UINavigationBars,所以我选择尝试使用iOS8的UIVisualEffectView with Blur。
此解决方案大部分都有效,但当此模糊视图下方的UITableView滚动时会出现非常明显的闪烁效果。当图像边缘或彩色矩形在模糊视图下方通过时,会发生大量闪烁。
有没有人经历过这个?有谁知道如何解决这个问题?
我的实现很简单,我将UIVisualEffectView拖到我的视图控制器上并将其约束为顶部,左侧和右侧屏幕边界,并添加了64的高度约束。在它之下只是一个带有一些图像和文本的UITableView。 / p>
答案 0 :(得分:1)
“我认为计算模糊时不考虑视图下的内容。可能是外推(通过镜像,复制,包装等填充图像......如同最小化边界效果一样)在任何卷积上。)但在许多情况下,这会产生不希望的视觉跳跃。
如果你想最小化这个神器,只需要制作 UIVisualEffectView比您的视图更大。几个像素就足够了, 无论如何,模糊内核并不是那么大。并让你的视图剪辑 限制。“
参考:https://medium.com/@imho_ios/avoid-artifacts-on-uiblureffect-edges-c30e737c21fb
这对我有用,至少消除了导航栏中的底部闪烁。但是,它没有在顶部工作。我认为这是由于查看(可能是UIWindow?)剪辑 - 在我的情况下 - tableView。
<强>更新强> 似乎这个bug在iOS 9.0及更高版本中得到修复。
答案 1 :(得分:0)
我创建一个alpha为0的uiview,并添加blurview作为其子视图。因此,我可以最小化闪烁问题也可以隐藏/显示或使用动画圆角。