gpt4 book ai didi

iphone - 基于自定义线性渐变的UILabel文本颜色

转载 作者:行者123 更新时间:2023-12-03 18:50:42 25 4
gpt4 key购买 nike

所以我想根据 Photoshop 中制作的渐变设置 UILabel 的文本颜色。我有渐变的 rgb 值 {211,119,95} 和 {199,86,56}。这可能吗?我该怎么做?

最佳答案

如果您想以 iOS 6+ 为目标,使用 UIColor 类别

您从渐变创建 UIColor:

+ (UIColor*) gradientFromColor:(UIColor*)c1 toColor:(UIColor*)c2 withHeight:(int)height
{
CGSize size = CGSizeMake(1, height);
UIGraphicsBeginImageContextWithOptions(size, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();

NSArray* colors = [NSArray arrayWithObjects:(id)c1.CGColor, (id)c2.CGColor, nil];
CGGradientRef gradient = CGGradientCreateWithColors(colorspace, (CFArrayRef)colors, NULL);
CGContextDrawLinearGradient(context, gradient, CGPointMake(0, 0), CGPointMake(0, size.height), 0);

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

CGGradientRelease(gradient);
CGColorSpaceRelease(colorspace);
UIGraphicsEndImageContext();

return [UIColor colorWithPatternImage:image];
}

然后使用 attrString 作为你的 NSMutableAttributeString:

[attrString addAttribute:NSForegroundColorAttributeName value:[UIColor gradientFromColor:[UIColor greenColor] toColor:[UIColor redColor] withHeight:labelView.height] range:defaultRange];
labelView.attributedString = attrString;

或者如果您不需要笔划或其他样式效果,则只需设置 textColor

labelView.textColor = [UIColor gradientFromColor:[UIColor greenColor] toColor:[UIColor redColor] withHeight:labelView.height];

瞧,它在一行上与 UILabel 配合使用效果更好,否则您必须根据字体 (UIFont.leading) 计算行高并将其传递给方法,背景将垂直重复。

关于iphone - 基于自定义线性渐变的UILabel文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15904908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com