我希望能把任何 colored颜色 变成渐变色.我打算这样做的方式是使用核心图形绘制渐变.我想做的是得到一种 colored颜色 ,比如:

[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0];

然后得到一种 colored颜色 ,深一些,浅一些.有人知道怎么做吗?非常感谢.

推荐答案

- (UIColor *)lighterColorForColor:(UIColor *)c
{
    CGFloat r, g, b, a;
    if ([c getRed:&r green:&g blue:&b alpha:&a])
        return [UIColor colorWithRed:MIN(r + 0.2, 1.0)
                               green:MIN(g + 0.2, 1.0)
                                blue:MIN(b + 0.2, 1.0)
                               alpha:a];
    return nil;
}

- (UIColor *)darkerColorForColor:(UIColor *)c
{
    CGFloat r, g, b, a;
    if ([c getRed:&r green:&g blue:&b alpha:&a])
        return [UIColor colorWithRed:MAX(r - 0.2, 0.0)
                               green:MAX(g - 0.2, 0.0)
                                blue:MAX(b - 0.2, 0.0)
                               alpha:a];
    return nil;
}

这样使用:

UIColor *baseColor = // however you obtain your color
UIColor *lighterColor = [self lighterColorForColor:baseColor];
UIColor *darkerColor = [self darkerColorForColor:baseColor];

EDIT:正如@Anchu Chimala指出的那样,为了获得最大的灵活性,这些方法应该作为UIColor类别来实现.此外,根据@Riley的 idea ,将 colored颜色 适当地变深或变亮可能是一个更好的主意,而不是增加或减go 常量值.正如@jrturton所指出的,没有必要操作RGB组件;最好修改亮度属性本身.总而言之:

@implementation UIColor (LightAndDark)

- (UIColor *)lighterColor
{
    CGFloat h, s, b, a;
    if ([self getHue:&h saturation:&s brightness:&b alpha:&a])
        return [UIColor colorWithHue:h
                          saturation:s
                          brightness:MIN(b * 1.3, 1.0)
                               alpha:a];
    return nil;
}

- (UIColor *)darkerColor
{
    CGFloat h, s, b, a;
    if ([self getHue:&h saturation:&s brightness:&b alpha:&a])
        return [UIColor colorWithHue:h
                          saturation:s
                          brightness:b * 0.75
                               alpha:a];
    return nil;
}
@end

Ios相关问答推荐

连接一些字符串,每个字符串都应该可以在swiftUI中单独点击

如何创建自定义组件来接受(和传递)所有可能的Textfield参数?

在iOS 17脉冲符号效果不起作用的情况下制作UIBarButtonItem动画(没有UIImageView)

如何解释在SwiftUI视图中观察到持续的数据更改

Swift在SceneKit中为scnnode添加自定义几何体(视图)

如何在SwiftUI中顺时针和逆时针两个方向应用旋转效果?

SwiftData在获取值时应用程序崩溃:线程1:EXC_BREAKPOINT(代码=1,子代码=0x101e8303c)

ScrollViewReader Scrollto Not Working

在flutter中使用flatter_screenutil这样的软件包的目的是什么?

Swift UI中如何为Text提供内部填充

Flutter Aging Person 自定义小部件

无法从 Xcode 获取模拟器列表.请打开 Xcode 并try 直接从那里运行项目以解决剩余问题

UIView 倒置旋转时的zoom 问题

在 UICollectionView 上动态设置布局导致莫名其妙的 contentOffset 变化

Select UITableViewCell 时 UIView backgroundColor 消失

如何忽略touch 事件并将它们传递给另一个子视图的 UIControl 对象?

在主线程上发布 NSNotification

如何使用 sendAsynchronousRequest:queue:completionHandler:

iOS 7 半透明模态视图控制器

如何为 UILabel 的背景 colored颜色 设置动画?