在我的 iPhone 应用程序中,我希望 UILabel 中的文本发光一秒钟,然后淡出一秒钟;。我也想重复这个循环 3 或 4 次。
这可能吗?
在我的 iPhone 应用程序中,我希望 UILabel 中的文本发光一秒钟,然后淡出一秒钟;。我也想重复这个循环 3 或 4 次。
这可能吗?
从 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>
并链接到QuartzCore
orCoreGraphics
框架(感谢评论者指出这一点)。
我发布了一些示例代码,这些代码是 UILabel 的子类,使您能够将发光和柔和阴影应用于文本。
http://www.redrobotstudios.com/blog/2010/04/29/create-glow-soft-shadow-text-on-iphone/
- (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;
}
使用它时,我得到了发光效果。
希望能帮助到你。
快乐编码:)
是的。使用 beginAnimation...commitAnimation,并使用 alpha 值使 ULabel 变亮或变暗。确保 UILabel 的 alpha 的默认值从 0.85 开始,然后变亮到 1.0,然后变暗到 0.75,当一切都完成后,你回到 0.85。
还有其他方法可以做到这一点,例如在灰色或黑色标签顶部有另一个视图,然后使用相同的 begin...commitAnimation 将其上的 alpha 从 0 更改为 0.20 左右。
有很多方法可以做到这一点,质量参差不齐。一种方法是继承 UILabel,并在 drawRect 方法中的 coregraphics 中实现某种渐变效果。
您还可以使用文本阴影(更改颜色和 alpha),看看您是否可以想出一个像样的发光。
最简单的方法可能是在 Photoshop 中制作一个透明的发光轮廓图像并将其放在文本后面,然后像 mahboudz 建议的那样...使用 coreanimation 淡入淡出图像。
对于那些使用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更改为更低的值。