Почему моя тень CALayer размыта на сетчатке, когда используется shadowPath с shadowRadius, установленным в 0? - PullRequest
4 голосов
/ 28 января 2012

У меня есть кнопка, к которой я добавляю тень, например:

b.backgroundColor = [UIColor colorWithRed:0.820 green:0.878 blue:0.941 alpha:1.000];
b.layer.cornerRadius = 3;
b.layer.shadowOffset = CGSizeMake(2, 2);
b.layer.shadowOpacity = 0.2;
b.layer.shadowRadius = 0;

Это прекрасно работает:

retina shadow without shadow path

Если я использую теневой путь следующим образом:

b.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:b.bounds cornerRadius:b.layer.cornerRadius].CGPath;

Тень размыта на устройствах сетчатки:

enter image description here

Это нормально на устройствах без сетчатки и, кажется, работает правильно, если shadowRadius не ноль. Я попытался установить contentsScale и rasterizationScale на 2, но это не влияет на тень.

Есть еще идеи?

1 Ответ

4 голосов
/ 09 июня 2015

Начиная с iOS 9.0, свойство contentsScale CALayer также будет влиять на масштаб растеризации shadowPath.Другими словами, установка contentsScale для слоя в масштабе экрана решит вашу проблему.

...