什么是UITableView separatorEffect属性?

时间:2014-09-29 00:14:45

标签: uitableview ios8

iOS 8中的新功能是separatorEffect属性,您可以为其分配UIVisualEffect。有没有人想出这是为了什么?我已经尝试过了,我认为它没有任何视觉效果。

3 个答案:

答案 0 :(得分:21)

我想知道完全相同的事情,所以我将Github项目放在一起,面对同样问题的任何人。

基本思想是,如果tableView的backgroundView包含具有模糊效果的UIVisualEffectView,那么将seperatorEffect设置为具有与UIVisualEffectView相同模糊的鲜明效果将产生我们在通知中心看到的效果,其中分隔符看起来是透明的。

这样的事情:

tableView.separatorEffect = UIVibrancyEffect(forBlurEffect: blurredBackgroundView.blurView.effect as UIBlurEffect)

将生成如下表格视图:

enter image description here

答案 1 :(得分:4)

首先观看来自今年WWDC的会话419:" Advanced Graphics and Animations for iOS Apps",他们解释了新视觉效果类的工作原理。

我的app中有一个UITableViewController,我用它作为模态弹出窗口。具有UIBlurEffect的UIVisualEffectView使父视图控制器模糊,而表视图分隔符将UIVibrancyEffect设置为效果。在我的iPhone 5上,它看起来像这样: Screenshot of modal popover

如果separatorEffect为nil,那么这就是相同的视图: enter image description here

当然,您可以将UIBlurEffect应用于分隔符,但这很可能只是浪费资源。

注意:实际上并没有做我在这个例子中所做的事情。 UIVibrancyEffect 非常昂贵。只是将UIVibrancyEffect应用于此表格视图的分隔符会导致我的应用程序错过iPhone 5上的60 FPS目标。

另请注意,Settings.app中“辅助功能”部分下的“缩小透明度”选项是一个问题,会导致UIBlurEffects呈现为纯色。在实例化任何UIVisualEffects之前一定要检查。以下是Google的一些关键字:UIAccessibilityIsReduceTransparencyEnabled()UIAccessibilityReduceTransparencyStatusDidChangeNotification

希望我能帮助你。

答案 2 :(得分:1)

正如两个答案所说的那样,当桌子的背景是模糊效果时,这个目的唯一的效果是活力效果。有效和无效的差异可能很微妙:

enter image description here

enter image description here