2010-01-18 2 views
2

У меня есть простой круг, нарисованный в моем подклассе uiview, как показано ниже. Как добавить небольшую дровую тень в нижней части цирковой?iphone дроу тень на круг

- (void)drawRect:(CGRect)rect 
    { 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    UIGraphicsPushContext(ctx); 
    CGContextSetRGBFillColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); // white color 
    CGContextFillEllipseInRect(ctx, CGRectMake(10.0f, 10.0f, 100.0f, 100.0f)); // a white filled circle with a diameter of 100 pixels, centered in (60, 60) 
    UIGraphicsPopContext(); 

    //Now what here? 
    } 

ответ

4

Чтобы следовать по ответу SLF, вы бы заменить код выше:

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    UIGraphicsPushContext(ctx); 
    CGContextSetRGBFillColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); // white color 
    CGContextSetShadow(ctx, CGSizeMake(2.0f, 2.0f), 2.0f); 
    CGContextFillEllipseInRect(ctx, CGRectMake(10.0f, 10.0f, 100.0f, 100.0f)); // a white filled circle with a diameter of 100 pixels, centered in (60, 60) 
    UIGraphicsPopContext(); 
} 

Это создаст тень, которая смещена на 2 пикселя вниз и справа от вашего круга, с размытие в 2 пикселя. Вы можете изменить эти значения, чтобы создать необходимый эффект. CGContextSetShadowWithColor() также может использоваться с другим цветом, чем черный, если вы хотите добавить эффект свечения на этот чертеж.

1

См. Quartz2D Shadows руководство.

CGContextSetShadowWithColor (myContext, myShadowOffset, 5, myColor); 
+0

Как установить размер тени или непрозрачность? –

+1

@VanDuTran '5' выше - это размер, но они называют это размытием. Прозрачность является частью цвета. – slf

+1

Хм .. нормально, это странно, как они это используют. Размытие 4 и 10 очень светлое, а значение от 6 до 8 более «непрозрачное». Я настраивал его на 20 и вообще не видел тень –