2009-09-14 77 views
19

在我的iPhone應用程序中,我希望UILabel中的文字發光一秒鐘,然後淡出一秒。我也想重複這個循環說3或4次。IPhone文字發光效果

這可能嗎?

+0

很好的問題。我想要做確切的事情。 – Raptor

+1

你應該接受@ andrewgleave的答案,因爲它效果很好! – msgambel

回答

2

是的。使用beginAnimation ... commitAnimation,並使用alpha值來使ULabel變亮或變暗。確保UILabel alpha的默認值從0.85開始,然後變亮爲1.0,然後變暗爲0.75,當所有操作完成後,返回0.85。

還有其他方法可以做到這一點,比如在灰色或黑色的標籤頂部有另一個視圖,並且您使用相同的begin ... commitAnimation將alpha從0改爲0.20左右。

+0

閱讀問題請 – SeniorShizzle

+0

他只是回答動畫部分,所以這個答案是可以的。 –

2

有很多方法可以做到這一點,質量不同。一種方法是對UILabel進行子類化,並在drawRect方法中的coregraphics中實現某種漸變效果。

你也可以玩文字陰影(改變顏色和alpha),看看你是否能想出一個體面的光暈。

最簡單的方法可能是在photoshop中製作一個透明的輝光輪廓圖像,並將其放在文本後面,然後像mahboudz建議的那樣...使用coreanimation淡入淡出圖像。

39

由於3.2你有在SDK陰影的直接支持。

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

播放與參數:

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

,避免陰影被修剪由標籤bouds:

label.layer.masksToBounds = NO; 

不要忘記

#include <Quartzcore/Quartzcore.h> 

和鏈接反對QuartzCoreCoreGraphics框架(感謝評論者指出了這一點)。

+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; 
} 

使用此功能時,我會獲得發光效果。

希望它有幫助。

快樂編碼:)