2009-09-14 70 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; 
} 

使用此功能时,我会获得发光效果。

希望它有帮助。

快乐编码:)