Вы можете создать эффект свечения вокруг любого пути, используя CGContextSetShadowWithColor
, но вы не получите точного контроля над внешним видом. В частности, тень по умолчанию достаточно света:
И единственный способ, которым я знаю, чтобы сделать его темнее, чтобы сделать его снова над собой:
не является оптимальным, но он приближается к тому, что вы хотите очень хорошо.
Этих изображений были получены с помощью следующей drawRect
:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGMutablePathRef path = CGPathCreateMutable();
int padding = 20;
CGPathMoveToPoint(path, NULL, padding, padding);
CGPathAddLineToPoint(path, NULL, rect.size.width - padding, rect.size.height/2);
CGPathAddLineToPoint(path, NULL, padding, rect.size.height - padding);
CGContextSetShadowWithColor(context, CGSizeZero, 20, UIColor.redColor.CGColor);
CGContextSetFillColorWithColor(context, UIColor.blueColor.CGColor);
CGContextAddPath(context, path);
CGContextFillPath(context);
// CGContextAddPath(context, path);
// CGContextFillPath(context);
CGPathRelease(path);
}
Одна вещи, чтобы иметь в виде, что делает нечеткую тень довольно дорого, что может или не может быть проблемой, в зависимости от того, как часто ваших взглядов перерисованы. Если тени не нужны для анимации, подумайте о том, чтобы сделать их одним из UIImage
и просто отобразить результат в UIImageView
.
Достаточно ли цветной тени? –
@ IanHenry на самом деле не потому, что он внезапно закончится, а не постепенно станет альфа. Я понимаю, что я мог бы сделать несколько «колец» различной альфы, но я ищу что-то менее взломанное. –
Размытие тени можно изменить в 'CGContextSetShadowWithColor'; что позволяет вам делать что-то очень похожее на изображение, которое вы показали (вы не получаете точного контроля над градиентом тени). –