19

在我的 iPhone 应用程序中,我希望 UILabel 中的文本发光一秒钟,然后淡出一秒钟;。我也想重复这个循环 3 或 4 次。

这可能吗?

4

6 回答 6

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;

并且为了避免阴影被标签包夹住:

label.layer.masksToBounds = NO;

不要忘记

#include <Quartzcore/Quartzcore.h>

并链接到QuartzCoreorCoreGraphics框架(感谢评论者指出这一点)。

于 2011-01-20T14:28:18.800 回答
14

我发布了一些示例代码,这些代码是 UILabel 的子类,使您能够将发光和柔和阴影应用于文本。

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

于 2010-04-29T15:04:21.707 回答
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;
}

使用它时,我得到了发光效果。

希望能帮助到你。

快乐编码:)

于 2012-05-11T17:14:45.307 回答
2

是的。使用 beginAnimation...commitAnimation,并使用 alpha 值使 ULabel 变亮或变暗。确保 UILabel 的 alpha 的默认值从 0.85 开始,然后变亮到 1.0,然后变暗到 0.75,当一切都完成后,你回到 0.85。

还有其他方法可以做到这一点,例如在灰色或黑色标签顶部有另一个视图,然后使用相同的 begin...commitAnimation 将其上的 alpha 从 0 更改为 0.20 左右。

于 2009-09-14T09:37:09.017 回答
2

有很多方法可以做到这一点,质量参差不齐。一种方法是继承 UILabel,并在 drawRect 方法中的 coregraphics 中实现某种渐变效果。

您还可以使用文本阴影(更改颜色和 alpha),看看您是否可以想出一个像样的发光。

最简单的方法可能是在 Photoshop 中制作一个透明的发光轮廓图像并将其放在文本后面,然后像 mahboudz 建议的那样...使用 coreanimation 淡入淡出图像。

于 2009-11-17T04:07:57.633 回答
1

对于那些使用Swift 4的人来说,这里是我用于多个对象以发出与它们相同的颜色的方法:

let colorRed: UIColor? = timeLabel.textColor
timeLabel.layer.shadowColor = colorRed?.cgColor
timeLabel.layer.shadowRadius = 4.0
timeLabel.layer.shadowOpacity = 0.9
timeLabel.layer.shadowOffset = CGSize.zero
timeLabel.layer.masksToBounds = false

至于动画发光,只需添加一个 3-4 循环的计时器并将.shadowOpacity更改为更低的值。

发光环的发光时间

于 2018-08-09T06:51:43.897 回答