CALayer shadow с атрибутами Spread & Size? - PullRequest
9 голосов
/ 30 ноября 2011

Я изо всех сил пытаюсь создать тень вокруг CALayer. Для достижения эффекта, который я пытаюсь достичь, мне нужен доступ к «интенсивности» тени. Как-то похоже на ползунок «Распространение» в Photoshop's Layer Styles. Я думаю, что свойство "ShadowRadius" CALayer эквивалентно слайдеру "Размер" в Photoshop.

Есть предложения? Может быть, радиальный градиент вариант?

Ответы [ 2 ]

8 голосов
/ 30 ноября 2011

Установите слои shadowOffset, shadowOpacity и shadowRadius, и у вас должно получиться то, что вы ищете.Попробуйте это для теневого проекта непосредственно «под» слоем с размытостью в 5 пикселей, что при правильном цвете может также сделать его похожим на свечение:

6 голосов
/ 09 июня 2014

Вы можете управлять «распространением», устанавливая пользовательское свойство shadowPath на CALayer.

CGFloat radius = CGRectGetWidth(view.bounds)/2.0;
// this is a sample code for a circle, but you can use any shape you want
CGPathRef shadowPathRef = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 2.0 * radius, 2.0 * radius) cornerRadius:radius].CGPath;

layer.shadowPath = shadowPathRef;

Если вы установите радиус на большее значение, разброс теней будет больше.

...