我有地图。在地图上,我想画一个小的,模糊的圆圈。我实现了这样的东西:
UIVisualEffect *visualEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
self.visualEffectView = [[UIVisualEffectView alloc] initWithEffect:visualEffect];
[self addSubview:self.visualEffectView];然后在layoutSubviews
[self.visualEffectView setFrame:CGRectMake(0.f, 0.f, 20.f, 20.f];现在的问题是让这一观点变得更全面。我试过:
[self.visualEffectView.layer setCornerRadius:10.f];但是什么都没发生。另一次尝试是(基于索夫问题):
CAShapeLayer *mask = [CAShapeLayer layer];
mask.path = [UIBezierPath bezierPathWithOvalInRect:self.visualEffectView.bounds].CGPath;
self.visualEffectView.layer.mask = mask;但在这种情况下,visualEffectView是圆的,但不会模糊:/。有什么办法让它起作用吗?
顺便说一句:我试过FXBlurView,但是它的工作非常慢,我不能接受我的应用程序只在iPhone 5上加载地图+模糊1分钟。
发布于 2019-11-03 15:22:38
从最初的问题开始,事情发生了明显的变化,但我能够做到这一点,只需在视觉效果视图本身的“用户定义的运行时属性”中选择“剪辑到边界”并设置"layer.cornerRadius“。
发布于 2015-03-01 20:03:05
试用:
self.visualEffectView.clipsToBounds = YES;把这个放在你设置cornerRadius之后。应该是这样的。你可以省去BezierPath的东西。希望这会有所帮助:)
编辑
我只是在我自己的项目中尝试了类似的东西。保持圆角模糊的一个好方法是将视觉效果视图作为一个新视图的子视图,与您的视觉效果视图具有相同的框架。您现在只需设置这个新父UIView对象的角半径,并将其clipsToBounds属性设置为YES。然后它会自动给它的子视图角半径,因为它剪辑到它的边界。
试试看,在我的情况下是可行的。
发布于 2016-04-14 23:39:49
如果有人想知道怎么做,我想明白了,不需要代码:
现在,我创建了我的链接使用segue,如果您需要使用segue,您的segue必须设置为Modal,演示必须设置为超过全屏(而不仅仅是全屏)。
下面是一个指向演示它的项目文件的链接。注意第二个视图控制器中视图的层次结构:Dropbox上的项目文件
编辑:我的照片不见了,所以我读了。

https://stackoverflow.com/questions/28798269
复制相似问题