Я добавляю тень к UIView:
[blurView.layer setCornerRadius:kCornerRadius];
blurView.layer.masksToBounds = NO;
blurView.layer.shadowColor = [[UIColor redColor] CGColor];
blurView.layer.backgroundColor = blurView.layer.shadowColor;
blurView.layer.shadowPath = [UIBezierPath
bezierPathWithRoundedRect:CGRectMake(-2.0*kCornerRadius, -2.0*kCornerRadius, blurView.bounds.size.width+4.0*kCornerRadius, blurView.bounds.size.height+4.0*kCornerRadius)
cornerRadius:kCornerRadius].CGPath;
blurView.layer.cornerRadius = kCornerRadius;
blurView.layer.shadowOffset = CGSizeMake(0.0, 0.0);
blurView.layer.shadowRadius = kCornerRadius;
blurView.layer.shadowOpacity = kOpacity;
blurView.layer.opacity = 1.0;
Эта часть кода дает мне это представление, как будто uiview размыто:
Когда я пытаюсь изменить непрозрачность blurView.layer (например, на 0,5), я получаю неожиданный вид:
Как вы можете видеть - я получаю острые края uiview.
Я думаю, непрозрачность теней является частью непрозрачности слоя - это причина этой «ошибки».Кто-нибудь может помочь мне исправить это?Может быть, я могу объединить слои перед изменением прозрачности blurView.layer или что-то вроде этого?
UPD
С этим исправлением: blurView.layer.shadowColor = [[UIColorcolorWithRed: 1 зеленый: 0 синий: 0 альфа: 0,5] CGColor];
Я получаю это:
UPD
Ответ использует метод setShouldRasterize:
Спасибо всем!
[blurView.layer setShouldRasterize:YES];