2009-09-23 2 views
4

Я нарисую круг в методе drawRect и залейте его цветом. Теперь мне нужно добавить светящийся эффект в круг. Когда я нажимаю на кнопку, круг должен светиться. Как я могу это сделать? Любая помощь будет оценена!Добавление светящегося эффекта в круг

Заранее благодарен!

ответ

8

Если вы используете Quartz 2D, вы можете просто добавить белую тень к кругу.

См Пример кода в Quartz 2D Programming Guide for Shadows

компании Apple для создания тени, взятую из указанной выше ссылке:

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 
} 

удачи!

Строка комментария 3 Выше означает, что ваша тень будет белой (1.0, 1.0, 1.0). Строка комментария 2 - это смещение тени.

+0

Ключевым компонентом в приведенном выше коде является вызов CGContextSetShadowWithColor(). Строки 7 и 8 создали черную тень, которую они, вероятно, не хотят. Я предоставляю немного больше информации об этом в этом ответе: http://stackoverflow.com/questions/1229721/is-there-an-easy-way-or-library-available-to-let-text-glow/1230907# 1230907 –

+1

Большое спасибо Брок. Это сработало. Еще один квест, как я могу анимировать этот круг. На самом деле мне нужен медленный светящийся эффект. То есть для определенного события, круг светится, и после этого он возвращается к исходному виду без какого-либо светящегося фона. – diana

+0

Вы можете попробовать CAShapeLayer с круговой дорожкой в ​​нем, затем добавить белую тень и затем оживить теневой радиус. – nielsbot

0

Вы пробовали использовать UIButton с круглым кругом и цветом в качестве изображения? Он автоматически получит светящийся эффект без какой-либо работы от вас.

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

Если вы хотите сделать это без UIButton, скажем либо с помощью UIControl, либо в виде представления, тогда вы можете сделать снимок вашей кнопки, создать подходящее свечение в приложении для графического редактирования, например Photoshop, а затем добавить это изображение к вашему носу. Когда вы хотите показать свечение, добавьте его в представление с помощью простой анимации, которая использует преобразование небольшого размера, чтобы сделать импульс один раз.

Удачи вам!

Смежные вопросы