iOS梯度效果超过UILabel

Bli*_*ios 6 iphone objective-c uilabel ios

我想在UILabel上添加渐变效果,使它看起来像:

在此输入图像描述


请注意左右角的渐变效果.我不知道如何做到这一点.任何帮助或建议将不胜感激.

编辑: - 我尝试使用此代码 -

UIColor *endColor = [UIColor colorWithRed:20/255.0 green:157/255.0 blue:189/255.0 alpha:1.0];
NSArray *gradientColors = [NSArray arrayWithObjects:(id)[[UIColor clearColor] CGColor],(id)[endColor CGColor], nil];
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = gradientColors;
[gradientLayer setStartPoint:CGPointMake(0.0, 0.5)];
[gradientLayer setEndPoint:CGPointMake(1.0, 0.5)];
[self.rightLabel.layer insertSublayer: gradientLayer atIndex:0];
Run Code Online (Sandbox Code Playgroud)

但我变得喜欢:

在此输入图像描述

注意:

添加渐变作为标签的背景,但我想要像第一张图像中那样的渐变效果(请参阅右下角的标签)

0ye*_*eoj 2

您的代码是正确的,但您错过了设置将被CAGradientLayer..

\n\n

请注意,您需要使用带有 alpha 值的颜色,以避免出现黑色.. 例如:

\n\n

[UIColor colorWithRed:0 green:0.5 blue:1 alpha:0]

\n\n

或者

\n\n

[[UIColor YourColor] colorWithAlphaComponent:0]代替[UIColor clearColor]

\n\n

并检查这个示例代码,我已经尝试过这个并且对我有用,希望这也对你有用..快乐编码..:)

\n\n
CAGradientLayer *rightGradient = [CAGradientLayer layer];\nrightGradient.frame = CGRectMake(0, 0, YourLabel.frame.size.width, YourLabel.size.height);\nrightGradient.colors = [NSArray arrayWithObjects:(id)[UIColor colorWithRed:0 green:0.5 blue:1 alpha:0].CGColor, (id)[UIColor colorWithRed:0 green:0.5 blue:1 alpha:1].CGColor, nil];\n[rightGradient setStartPoint:CGPointMake(0.8, 0.9)];\n[rightGradient setEndPoint:CGPointMake(1.0, 0.9)];\n[YourLabel.layer addSublayer:rightGradient];\n
Run Code Online (Sandbox Code Playgroud)\n\n

哦最后一件事,如果你打算向左侧添加渐变,只需更改

\n\n
[rightGradient setStartPoint:CGPointMake(0.8, 0.9)];\n[rightGradient setEndPoint:CGPointMake(1.0, 0.9)];\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n
[leftGradient setStartPoint:CGPointMake(0.2, 0.1)];\n[leftGradient setEndPoint:CGPointMake(0.0, 0.1)];\n
Run Code Online (Sandbox Code Playgroud)\n\n

这里是示例输出:

\n\n

在此输入图像描述

\n\n
\n\n

按要求更新

\n\n

第 1 行:简单分配

\n\n
CAGradientLayer *rightGradient = [CAGradientLayer layer];\n
Run Code Online (Sandbox Code Playgroud)\n\n

第2行:CAGradientLayers帧

\n\n
rightGradient.frame = CGRectMake(0, 0, YourLabel.frame.size.width, YourLabel.size.height);\n
Run Code Online (Sandbox Code Playgroud)\n\n

这非常重要,这设置了框架(与 UIView 等相同)CAGradientLayer,意义origin.xorigin.y被考虑在内。

\n\n

第 3 行:.colors

\n\n
rightGradient.colors = [NSArray arrayWithObjects:(id)[UIColor colorWithRed:0 green:0.5 blue:1 alpha:0].CGColor, (id)[UIColor colorWithRed:0 green:0.5 blue:1 alpha:1].CGColor, nil];\n
Run Code Online (Sandbox Code Playgroud)\n\n

当您像我的示例中那样分配颜色数组时,颜色会相应地排列.. (color.alpha == 0) 位于索引 0 中,(color.alpha == 1) 位于索引 1 中,并将显示在左侧正确的..

\n\n

第 4 行:setStartPoint

\n\n
[rightGradient setStartPoint:CGPointMake(0.8, 0.9)];\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

起点对应于渐变的第一个停止点。该点在单位坐标空间中定义,然后在绘制时映射到图层 xe2x80x99s 边界矩形。

\n\n

默认值为 (0.5,0.0)。

\n
\n\n

第 5 行:setEndPoint

\n\n
[rightGradient setEndPoint:CGPointMake(1.0, 0.9)];\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

终点对应于渐变的最后一站。该点在单位坐标空间中定义,然后在绘制时映射到图层 xe2x80x99s 边界矩形。

\n\n

默认值为 (0.5,1.0)。

\n
\n\n
[YourLabel.layer addSublayer:rightGradient];\n
Run Code Online (Sandbox Code Playgroud)\n\n

这一切都在这里讨论过.. CAGradientLayer

\n\n

关于您要求的颜色,您可以使用这个:UIColor Code Generator

\n\n

但是如果你想使用十六进制字符串作为颜色,#ace123你可以使用这个方法:

\n\n
+ (UIColor *)colorWithHexString:(NSString *)hexString withOpacity:(CGFloat)opacity\n{\n    unsigned rgbValue = 0;\n\n    NSScanner *scanner;\n\n    scanner = [NSScanner scannerWithString:hexString];\n\n    scanner.scanLocation = ([hexString hasPrefix:@"#"]) ? 1 : 0;\n\n    [scanner scanHexInt:&rgbValue];\n\n    UIColor *color = [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:opacity];\n\n    return color;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

^_^ 干杯!

\n