将 UIVibrancyEffect 应用于 UITableViewCell 中的 UILabel

Posted

技术标签:

【中文标题】将 UIVibrancyEffect 应用于 UITableViewCell 中的 UILabel【英文标题】:Apply UIVibrancyEffect to UILabel in UITableViewCell 【发布时间】:2015-01-06 03:33:31 【问题描述】:

我的通知中心小部件包含一个UITableView,并且在UITableViewCell 上有一个UILabel,我想“模糊”/应用UIVibrancyEffect。这是我尝试过的,但似乎导致异常:

UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:[UIVibrancyEffect notificationCenterVibrancyEffect]];
effectView.frame = cell.longStatusLabel.bounds;
__strong UILabel *longStatus = cell.longStatusLabel;
cell.longStatusLabel = effectView;
[effectView.contentView addSubview:longStatus];
[cell addSubview:effectView];

当我运行此代码时,我的通知中心扩展程序说它无法加载。

【问题讨论】:

有什么例外? 【参考方案1】:

我认为问题在于您将标签设置为等于UIVisualEffectView。试试这个。以编程方式创建UILabel

UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:[UIVibrancyEffect notificationCenterVibrancyEffect]];
effectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
UILabel *label = [[UILabel alloc] init];
label.text = @"my label";
label.textColor = [UIColor colorWithWhite:1.0 alpha:0.5f];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
//...
[effectView.contentView addSubview:label];
[cell.contentView addSubview:effectView];

您还应该能够在 Interface Builder 中使用具有模糊和活力效果的视觉效果视图来执行此操作,而不必以编程方式完成。

另外,如果没有按预期工作,请尝试在调试时设置断点。如果它拒绝加载,请尝试从通知中心删除扩展并重新添加,或者如果您使用的是 ios 模拟器,请选择其他设备。

【讨论】:

以上是关于将 UIVibrancyEffect 应用于 UITableViewCell 中的 UILabel的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 上的 UIVibrancyEffect

为了使模糊的 UIVibrancyEffect 起作用,我们是不是必须将其作为单独的视图添加到 UIBlurEffect 的 contentView 中?

无法将多背景颜色应用于材质 ui 快餐栏

UI-Bootstrap 仅将模态背景应用于元素

Unity - 将后期处理效果应用于所有 UI 元素

我如何将 Material-UI 托管样式应用于非 Material-ui、非反应元素?