4

I draw a circle in the drawRect method and fill it with a color. Now i need to add a glowing effect to the circle. When i click on a button, the circle needs to glow. How can i do this? Any help will be greatly appreciated!

Thanks in advance!!!

RK-
  • 12,099
  • 23
  • 89
  • 155
diana
  • 427
  • 2
  • 10
  • 22

2 Answers2

8

If you are using Quartz 2D, you can simply add a white shadow to the circle.

See the Quartz 2D Programming Guide for Shadows

Apple's Sample code for setting up a shadow taken from the link above:

void MyDrawWithShadows (CGContextRef myContext, // 1
                         float wd, float ht);
{
    CGSize          myShadowOffset = CGSizeMake (-15,  20);// 2
    float           myColorValues[] = {1.0, 1.0, 1.0, .6};// 3 (White shadow colour)
    CGColorRef      myColor;// 4
    CGColorSpaceRef myColorSpace;// 5

    CGContextSaveGState(myContext);// 6

    CGContextSetShadow (myContext, myShadowOffset, 5); // 7

    // Your drawing code here!!!!!!!!!!!!!!!!   // 8

    CGContextSetRGBFillColor (myContext, 0, 1, 0, 1);
    CGContextFillRect (myContext, CGRectMake (wd/3 + 75, ht/2 , wd/4, ht/4));

    myColorSpace = CGColorSpaceCreateDeviceRGB ();// 9
    myColor = CGColorCreate (myColorSpace, myColorValues);// 10
    CGContextSetShadowWithColor (myContext, myShadowOffset, 5, myColor);// 11
    // Your drawing code here// 12
    CGContextSetRGBFillColor (myContext, 0, 0, 1, 1);
    CGContextFillRect (myContext, CGRectMake (wd/3-75,ht/2-100,wd/4,ht/4));

    CGColorRelease (myColor);// 13
    CGColorSpaceRelease (myColorSpace); // 14

    CGContextRestoreGState(myContext);// 15
}

Good luck!

Comment line 3 Above means your shadow will be white (1.0, 1.0, 1.0). Comment line 2 is the shadow offset.

Brock Woolf
  • 46,656
  • 50
  • 121
  • 144
  • The key component in the above code is the call to CGContextSetShadowWithColor(). Lines 7 and 8 set up a black shadow, which they probably don't want. I provide a little more information on this in this answer: http://stackoverflow.com/questions/1229721/is-there-an-easy-way-or-library-available-to-let-text-glow/1230907#1230907 – Brad Larson Sep 23 '09 at 12:21
  • 1
    Thank you very much Brock. It worked.One more quest,how can i animate this circle. Actually i need slow glowing effect . That is for a particular event, the circle glows and after that it returns to the original view without any glowing background. – diana Sep 24 '09 at 07:13
  • You could try a CAShapeLayer with a circular path in it, then add a white shadow and then animate your shadow radius. – nielsbot Aug 07 '13 at 07:01
0

Have you tried using a UIButton, with your round circle and color as its image? It would automatically get a glowing effect without any work from you.

Duplicating that exact glow is a little hard since it actually is animated, starting as a smaller glow and then growing in a short period of time.

If you want to do it without UIButton, say either with UIControl, or as a view, then you could take a shot of your button, create a suitable glow in a graphic editing app like Photoshop, and then add that image to your nib. When you want to show the glow, add it to the view with a simple animation that uses a small size transform to make it pulse once.

Good luck!

mahboudz
  • 39,196
  • 16
  • 97
  • 124