2009-09-14 2 views
19

В моем приложении IPhone я хочу, чтобы текст в UILabel светился на секунду, а затем исчезал в течение секунды ;. Также я хочу повторить этот цикл, скажем, 3 или 4 раза.IPhone Text Glow Effect

Возможно ли это?

+0

хороший вопрос. Я хочу сделать точные вещи. – Raptor

+1

Вы должны принять ответ @ andrewgleave, так как он отлично работает! – msgambel

ответ

2

Да. Используйте beginAnimation ... commitAnimation и используйте значение alpha, чтобы скрасить или уменьшить ULabel. Убедитесь, что значение по умолчанию для альфа-канала UILabel начинается с 0,85 и увеличивается до 1,0, а затем уменьшается до 0,75, и когда все будет сделано, вы вернетесь к 0,85.

Есть и другие способы сделать это, например, иметь другой вид поверх ярлыка, который является серым или черным, и использовать одно и то же begin ... commitAnimation, чтобы изменить альфа на значение от 0 до 0,20 или около того.

+0

Прочтите вопрос, пожалуйста, – SeniorShizzle

+0

Он отвечает только на часть анимации, поэтому этот ответ в порядке. –

2

Существует много способов сделать это с различным качеством. Одним из способов было бы подклассы UILabel и реализовать какой-то эффект градиента в coregraphics в методе drawRect.

Вы также можете играть с тенью текста (изменить цвет и альфу) и посмотреть, сможете ли вы придумать приличное свечение.

Самый простой способ, возможно, сделать прозрачное изображение с подсветкой в ​​фотошопе и поместить его за текст, а затем сделать так, как маджудз предлагает ... затухать изображение в и из него с помощью колларинизации.

14

Я отправил некоторый пример кода, который подклассифицирует UILabel и позволяет применять свечение и мягкие тени к тексту.

http://www.redrobotstudios.com/blog/2010/04/29/create-glow-soft-shadow-text-on-iphone/

+0

hmmm это не работает для меня ... скомпилировано отлично, хотя ... – minovsky

+0

Его больше не работает. – NaXir

39

На 3.2 вы есть прямая поддержка теней в SDK.

label.layer.shadowColor = [label.textColor CGColor]; 
label.layer.shadowOffset = CGSizeMake(0.0, 0.0); 

Play с параметрами:

label.layer.shadowRadius = 3.0; 
label.layer.shadowOpacity = 0.5; 

И чтобы избежать тени быть обрезаются bouds метки:

label.layer.masksToBounds = NO; 

Не забудьте

#include <Quartzcore/Quartzcore.h> 

и ссылка на QuartzCore или CoreGraphics (спасибо комментаторам за указание на это).

+0

Не работает для меня. Что-нибудь еще я должен принять во внимание? – Stavash

+3

Вам нужно импортировать adam

+0

, у вас есть Quartzcore и скомпилирован успешно, но не видите никакого эффекта вообще? – minovsky

2
- (UILabel *) setUpGlowLabelWithFrame: (CGRect) frame fontSize: (int)fontSize { 
     UILabel* label = [[UILabel alloc] initWithFrame:frame]; 
     label.backgroundColor = [UIColor clearColor]; 
     label.font = [UIFont boldSystemFontOfSize:fontSize]; 
     label.textColor = [UIColor whiteColor]; 
     label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; 
     label.textAlignment = UITextAlignmentCenter; 
     label.layer.shadowColor = [label.textColor CGColor]; 
     label.layer.shadowOffset = CGSizeMake(0.0, 0.0); 
     label.layer.masksToBounds = NO; 

    label.layer.shadowRadius = 0.5f; 
    label.layer.shadowOpacity = 0.95; 
    label.numberOfLines = 2; 
    label.tag = 20; 

    return label; 
} 

Я получаю эффект свечения при использовании этого.

Надеюсь, это поможет.

Счастливое кодирование :)