2009-09-14 10 views
19

W aplikacji dla iPhone'a chcę, aby tekst w UILabel świecił przez sekundę, a następnie znikł na sekundę ;. Również chcę powtórzyć ten cykl, powiedzmy 3 lub 4 razy.Efekt świecowania tekstu IPhone

Czy to możliwe?

+0

ładne pytanie. Chcę zrobić dokładnie to. – Raptor

+1

Powinieneś zaakceptować odpowiedź @ andrewgleave, ponieważ zadziałało to świetnie! – msgambel

Odpowiedz

2

Tak. Użyj funkcji beginAnimation ... commitAnimation i użyj wartości alpha, aby rozjaśnić lub przyciemnić ULabel. Upewnij się, że domyślna wartość alfa UILabel zaczyna się od 0,85 i rozjaśnia się do 1,0, a następnie zmniejsza się do 0,75, a kiedy wszystko jest już gotowe, wracasz do 0.85.

Są na to inne sposoby, takie jak posiadanie innego widoku na górze etykiety, który jest szary lub czarny i używasz tego samego początku ... commitAnimation, aby zmienić alfa na wartość z 0 na 0.20 lub mniej.

+0

Przeczytaj pytanie, proszę – SeniorShizzle

+0

Odpowiada sam na część animacji, więc ta odpowiedź jest w porządku. –

2

Istnieje wiele sposobów na zrobienie tego przy różnej jakości. Jednym ze sposobów jest podklasa UILabel i implementacja pewnego rodzaju efektu gradientu w coregraphics w metodzie drawRect.

Można również odtwarzać za pomocą cienia tekstu (zmieniać kolor i alfa) i sprawdzać, czy można uzyskać przyzwoitą poświatę.

Najprostszym sposobem jest najprawdopodobniej uczynienie przezroczystego obrazu z błyskiem w photoshopie i umieszczenie go za tekstem, a następnie zrób to, co sugeruje mahboudz ... znikaj z obrazu przy użyciu coreanimation.

39

Począwszy od 3.2 tam jest bezpośrednie wsparcie dla cieni w SDK.

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

grać z parametrami:

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

i uniknąć cienia obcięcia bouds etykiecie:

label.layer.masksToBounds = NO; 

Nie zapomnij

#include <Quartzcore/Quartzcore.h> 

i link do QuartzCore lub CoreGraphics frameworków (dzięki komentatorom za wskazanie tego).

+0

Nie działa dla mnie. Coś jeszcze powinienem wziąć pod uwagę? – Stavash

+3

Musisz zaimportować adam

+0

mieć Quartzcore i skompilować z powodzeniem, ale nie widzisz żadnego efektu? – 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; 
} 

Otrzymuję efekt blasku podczas korzystania z tego.

Mam nadzieję, że to pomaga.

Happy kodowania :)