十六进制颜色工具类

简介: 十六进制颜色工具类

十六进制颜色工具类


颜色相关的一些知识

  • 颜色的基本组成
  • 一种颜色由N个颜色通道组成
  • 颜色通道
  • 1个颜色通道占据8bit
  • 1个颜色通道的取值范围
  • 10进制 : [0, 255]
  • 16进制 : [00, ff];
  • 常见的颜色通道
  • 红色 red R
  • 绿色 green G
  • 蓝色 blue B
  • 透明度 alpha A
  • R\G\B一样的是灰色
  • 颜色的种类
  • 24bit颜色
  • 由R\G\B组成的颜色
  • 常见的表示形式
  • 10进制(仅仅是用在CSS)
  • 红色 : rgb(255,0,0)
  • 绿色 : rgb(0,255,0)
  • 蓝色 : rgb(0,0,255)
  • 黄色 : rgb(255,255,0)
  • 黑色 : rgb(0,0,0)
  • 白色 : rgb(255,255,255)
  • 灰色 : rgb(80,80,80)
  • 16进制(可以用在CSS\android)
  • 红色 : #ff0000  #f00
  • 绿色 : #00ff00  #0f0
  • 蓝色 : #0000ff  #00f
  • 黄色 : #ffff00  #ff0
  • 黑色 : #000000  #000
  • 白色 : #ffffff  #fff
  • 灰色 : #979797
  • 32bit颜色
  • 由R\G\B\A组成的颜色
  • 常见的表示形式
  • 10进制(仅仅是用在CSS)
  • 红色 : rgba(255,0,0,255)
  • 绿色 : rgba(0,255,0,255)
  • 蓝色 : rgba(0,0,255,255)
  • 黄色 : rgba(255,255,0,255)
  • 黑色 : rgba(0,0,0,255)
  • 白色 : rgba(255,255,255,255)
  • 16进制(#AARRGGBB,  仅仅是用在android)
  • 红色 : #ffff0000
  • 绿色 : #ff00ff00
  • 蓝色 : #ff0000ff
  • 黄色 : #ffffff00
  • 黑色 : #ff000000
  • 白色 : #ffffffff

下面开始写工具类

30ad24b8e29c39f89db1dbbf6e5ddba0.png

Snip20170209_1.png

21f97a5f6925408425334cf5a07382de.png

Snip20170209_1.png

在.h文件中

7d3c01fbe42f52f012b95de330c56dfe.png

Snip20170209_2.png

代码呈上

// 默认alpha位1
+ (UIColor *)colorWithHexString:(NSString *)color;
//从十六进制字符串获取颜色,
//color:支持@“#123456”、 @“0X123456”、 @“123456”三种格式
+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha;

在.m文件中

7ac427a897d3c0682838e15df7ad2edc.png

Snip20170209_5.png

b65688741da45dad06149bd4d3852d3b.png

Snip20170209_6.png

代码呈上

#import "UIColor+Hex.h"
@implementation UIColor (Hex)
+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha
{
    //删除字符串中的空格
    NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
    // String should be 6 or 8 characters
    if ([cString length] < 6)
    {
        return [UIColor clearColor];
    }
    // strip 0X if it appears
    //如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾
    if ([cString hasPrefix:@"0X"])
    {
        cString = [cString substringFromIndex:2];
    }
    //如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾
    if ([cString hasPrefix:@"#"])
    {
        cString = [cString substringFromIndex:1];
    }
    if ([cString length] != 6)
    {
        return [UIColor clearColor];
    }
    // Separate into r, g, b substrings
    NSRange range;
    range.location = 0;
    range.length = 2;
    //r
    NSString *rString = [cString substringWithRange:range];
    //g
    range.location = 2;
    NSString *gString = [cString substringWithRange:range];
    //b
    range.location = 4;
    NSString *bString = [cString substringWithRange:range];
    // Scan values
    unsigned int r, g, b;
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[NSScanner scannerWithString:gString] scanHexInt:&g];
    [[NSScanner scannerWithString:bString] scanHexInt:&b];
    return [UIColor colorWithRed:((float)r / 255.0f) green:((float)g / 255.0f) blue:((float)b / 255.0f) alpha:alpha];
}
//默认alpha值为1
+ (UIColor *)colorWithHexString:(NSString *)color
{
    return [self colorWithHexString:color alpha:1.0f];
}
@end

使用

974bd3c669caadf443399461e66e580a.png

Snip20170209_9.png

相关文章
|
3月前
|
JavaScript
Js 实现十六进制颜色值和RGB颜色值转换整理
Js 实现十六进制颜色值和RGB颜色值转换整理
106 0
|
9月前
RGB颜色和16进制颜色转换太麻烦,使用SwiftUI搭建一个颜色值转换App(下)
RGB颜色和16进制颜色转换太麻烦,使用SwiftUI搭建一个颜色值转换App(下)
131 0
Qt 将字符串转成16进制显示
最近项目用到了需要将字符串转换成16进制显示。这玩意折腾了一上午。
765 0
|
9月前
|
存储
RGB颜色和16进制颜色转换太麻烦,使用SwiftUI搭建一个颜色值转换App(上)
RGB颜色和16进制颜色转换太麻烦,使用SwiftUI搭建一个颜色值转换App(上)
85 0
|
Python
用 python 图片把白色转成透明
用 python 图片把白色转成透明
88 0
RGB颜色值与十六进制颜色码怎么相互转换?
RGB颜色值与十六进制颜色码怎么相互转换?
166 0
RGB颜色值与十六进制颜色码怎么相互转换?
|
JavaScript
js:进制转换、保留指定位数小数、RGB/Hex颜色色值转换
js:进制转换、保留指定位数小数、RGB/Hex颜色色值转换
164 0
|
Java
java实现颜色Color对象和16进制之间的转换
package com.tsxs.test; import java.awt.Color; public class TestColor { public static void main(String[] args) { System.out.println(toHexFromColor(Color.BLUE)); System.out.println(toColorFro
5293 0
RGB颜色对照表以及十六进制
RGB颜色对照表以及十六进制
345 0
RGB颜色对照表以及十六进制
|
JavaScript Android开发 开发者
autojs颜色转换rgb与hsl互转
牙叔教程 简单易学
197 0