我有一张 map 。在 map 上,我想绘制一个模糊的小圆圈。我已经实现了这样的事情:

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];

现在的问题是使该 View 变圆。我试过了:
[self.visualEffectView.layer setCornerRadius:10.f];

但是什么也没发生。另一个尝试是(基于SOF question):
CAShapeLayer *mask = [CAShapeLayer layer];
mask.path = [UIBezierPath bezierPathWithOvalInRect:self.visualEffectView.bounds].CGPath;
self.visualEffectView.layer.mask = mask;

但是在这种情况下,visualEffectView是圆形的,但不会模糊:/。有什么办法可以使其正常工作?

顺便说一句:我尝试了FXBlurView,但是它运行非常缓慢,我无法接受我的应用在iPhone 5上仅加载map + blur约1分钟。

最佳答案

自从最初的问题以来,事情显然已经发生了变化,但是我仅通过选择“Clip to Bounds”并在Visual Effect View本身的“User Defined Runtime Attributes”中设置“layer.cornerRadius”就可以实现。

09-25 15:41