首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >圆UIVisualEffectView

圆UIVisualEffectView
EN

Stack Overflow用户
提问于 2015-03-01 19:49:37
回答 6查看 10.9K关注 0票数 16

我有地图。在地图上,我想画一个小的,模糊的圆圈。我实现了这样的东西:

代码语言:javascript
复制
UIVisualEffect *visualEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
self.visualEffectView = [[UIVisualEffectView alloc] initWithEffect:visualEffect];
[self addSubview:self.visualEffectView];

然后在layoutSubviews

代码语言:javascript
复制
[self.visualEffectView setFrame:CGRectMake(0.f, 0.f, 20.f, 20.f];

现在的问题是让这一观点变得更全面。我试过:

代码语言:javascript
复制
[self.visualEffectView.layer setCornerRadius:10.f];

但是什么都没发生。另一次尝试是(基于索夫问题):

代码语言:javascript
复制
CAShapeLayer *mask = [CAShapeLayer layer];
mask.path = [UIBezierPath bezierPathWithOvalInRect:self.visualEffectView.bounds].CGPath;
self.visualEffectView.layer.mask = mask;

但在这种情况下,visualEffectView是圆的,但不会模糊:/。有什么办法让它起作用吗?

顺便说一句:我试过FXBlurView,但是它的工作非常慢,我不能接受我的应用程序只在iPhone 5上加载地图+模糊1分钟。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-11-03 15:22:38

从最初的问题开始,事情发生了明显的变化,但我能够做到这一点,只需在视觉效果视图本身的“用户定义的运行时属性”中选择“剪辑到边界”并设置"layer.cornerRadius“。

票数 5
EN

Stack Overflow用户

发布于 2015-03-01 20:03:05

试用:

代码语言:javascript
复制
self.visualEffectView.clipsToBounds = YES;

把这个放在你设置cornerRadius之后。应该是这样的。你可以省去BezierPath的东西。希望这会有所帮助:)

编辑

我只是在我自己的项目中尝试了类似的东西。保持圆角模糊的一个好方法是将视觉效果视图作为一个新视图的子视图,与您的视觉效果视图具有相同的框架。您现在只需设置这个新父UIView对象的角半径,并将其clipsToBounds属性设置为YES。然后它会自动给它的子视图角半径,因为它剪辑到它的边界。

试试看,在我的情况下是可行的。

票数 36
EN

Stack Overflow用户

发布于 2016-04-14 23:39:49

如果有人想知道怎么做,我想明白了,不需要代码:

  1. 在属性编辑器中创建视图并将其背景设置为“清除颜色”(必须是透明颜色,而不是默认颜色)。
  2. 在第一个视图的顶部拖动另一个视图,将其大小调整到您想要的视觉效果视图的大小,并在属性编辑器中将其背景设置为“清除颜色”,并选中“剪辑子视图”。 同样在此视图上,转到identity检查器并在“用户定义的运行时属性”下添加一个名为"layer.cornerRadius“的新键路径,使其键入"Number",并将其值设置为9或更高,以获得适当的圆角边缘。( Xcode中有一个bug,一旦您更改了Type,就会将键路径更改为默认路径,如果发生这种情况,只需确保返回并在layer.cornerRadius中重新键入)。
  3. 在步骤3中,在视图顶部拖动一个模糊的视觉效果视图。
  4. 现在运行你的程序。你会有圆形的边缘,模糊的,没有人工制品。

现在,我创建了我的链接使用segue,如果您需要使用segue,您的segue必须设置为Modal,演示必须设置为超过全屏(而不仅仅是全屏)。

下面是一个指向演示它的项目文件的链接。注意第二个视图控制器中视图的层次结构:Dropbox上的项目文件

编辑:我的照片不见了,所以我读了。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28798269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档