如何在通知中心(iOS 8)中复制模糊文本

Dav*_*ser 20 blur uilabel ios8

我在iOS 8中使用TodayExtension,我想知道如何将模糊效果应用于文本或按钮.我已经发现它与UIVisualEffectView有关.但我不知道如何使用它.

我正在使用Objective-C

任何人都可以向我解释如何实现这一目标吗?

谢谢,大卫

在此输入图像描述

Bal*_*ick 22

更新了iOS 10的答案

在iOS 10中,您可以使用widgetPrimaryVibrancyEffectwidgetSecondaryVibrancyEffect自动返回UIVibrancyEffect对象.

查看此处此处的文档.

iOS 9的答案

使用此代码将振动效果应用于整个小部件:

UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:[UIVibrancyEffect notificationCenterVibrancyEffect]];
effectView.frame = self.view.bounds
effectView.autoresizingMask = self.view.autoresizingMask;

__strong UIView *oldView = self.view;

self.view = effectView;

[effectView.contentView addSubview:oldView];

self.view.tintColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)

  • 这无助于在底部创建按钮,如问题所示.我们怎么做? (3认同)

小智 8

你实际上在这里看两个效果.背景应用了模糊效果,并且标签应用了活力效果.

对于模糊效果,首先使用样式(暗,亮,超轻)初始化UIBlurEffect:

UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
Run Code Online (Sandbox Code Playgroud)

对于活力效果,您使用刚刚创建的模糊效果初始化UIVibrancyEffect:

UIVibrancyEffect *vibrancyEffect = [UIVibrancyEffect effectForBlurEffect:blurEffect];
Run Code Online (Sandbox Code Playgroud)

这是因为活力效果需要考虑潜在的模糊效果.

接下来,您将创建两个UIVisualEffectViews:

UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
UIVisualEffectView *vibrancyEffectView = [[UIVisualEffectView alloc] initWithEffect:vibrancyEffect];
Run Code Online (Sandbox Code Playgroud)

这些需要添加到视图层次结构中.UIVisualEffectView有一个contentView属性,您必须向其添加要应用相应效果的子视图.确保将vibrancyEffectView添加到blurEffectView的contentView的子视图中.

您也可以在IB中设置所有这些(我正在使用Xcode 6 beta 5).在对象库中有一个"带有模糊的视觉效果视图"和"视觉效果视图,带有模糊和活力",您可以将其拖动到视图中."具有模糊和活力的视觉效果视图"设置了两个如上所述嵌套的UIVisualEffectView.

有关详细信息,请查看WWDC14 Session 221和UIVisualEffectView.h标头.