2018-06-21 17:07:59 aaaaazq 阅读数 2871
  • 字符串十六进制颜色值转换为UIColor:
/**
 16进制颜色转换为UIColor

 @param hexColor 16进制字符串(可以以0x开头,可以以#开头,也可以就是6位的16进制)
 @param opacity 透明度
 @return 16进制字符串对应的颜色
 */
+(UIColor *)colorWithHexString:(NSString *)hexColor alpha:(float)opacity{
    NSString * cString = [[hexColor stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];

    // String should be 6 or 8 characters
    if ([cString length] < 6) return [UIColor blackColor];

    // strip 0X if it appears
    if ([cString hasPrefix:@"0X"]) cString = [cString substringFromIndex:2];
    if ([cString hasPrefix:@"#"]) cString = [cString substringFromIndex:1];

    if ([cString length] != 6) return [UIColor blackColor];

    // Separate into r, g, b substrings
    NSRange range;
    range.location = 0;
    range.length = 2;
    NSString * rString = [cString substringWithRange:range];

    range.location = 2;
    NSString * gString = [cString substringWithRange:range];

    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:opacity];
}
  • 十六进制数值转换为UIColor:
+(UIColor*)colorWithRGB:(NSUInteger)hex
                  alpha:(CGFloat)alpha
{
    float r, g, b, a;
    a = alpha;
    b = hex & 0x0000FF;
    hex = hex >> 8;
    g = hex & 0x0000FF;
    hex = hex >> 8;
    r = hex;

    return [UIColor colorWithRed:r/255.0f 
                           green:g/255.0f 
                           blue:b/255.0f 
                           alpha:a];
}

这两个方法建议以类方法写在UIColor的分类中,调用示例:

//字符串十六进制颜色值转换为UIColor
self.view.backgroundColor = [UIColor colorWithHexString:@"000000" alpha:0.4];
//十六进制数值转换为UIColor
self.view.backgroundColor = [UIColor colorWithRGB:0x242424 alpha:0.7];
2016-04-24 12:19:38 u010757842 阅读数 2197

最近在开发中遇到了16进制的颜色转换成RGB的问题,我在网上看了好多感觉没有适合自己的,现在我根据我遇到的问题为大家分享下,希望对遇到同样问题的小伙伴有帮助。

#FFFFFFFF其中#后面的前2位为16进制表示透明度的,后面的6位表示颜色;


-(UIColor *) getColor:(NSString *)hexColor
{
unsigned int alpha, red, green, blue;
NSRange range;
range.length =2;

range.location =1;
[[NSScanner scannerWithString:[hexColor substringWithRange:range]]scanHexInt:&alpha];//透明度
range.location =3;
[[NSScanner scannerWithString:[hexColor substringWithRange:range]]scanHexInt:&red];
range.location =5;
[[NSScanner scannerWithString:[hexColor substringWithRange:range]]scanHexInt:&green];
range.location =7;
[[NSScanner scannerWithString:[hexColor substringWithRange:range]]scanHexInt:&blue];
return [UIColor colorWithRed:(float)(red/255.0f)green:(float)(green/255.0f)blue:(float)(blue/255.0f)alpha:(float)(alpha/255.0f)];

}


//使用

[self getColor:@"#FFFFFFFF"];


2017-09-19 00:23:35 cjm2484836553 阅读数 14106

【转载请注明出处:From 李诗雨—http://blog.csdn.net/cjm2484836553/article/details/78025443

不诗意的女程序猿不是好厨师~

最近又是对老项目各种修改,这期间经常要和ios统一一些样式颜色等等,ios总是喜欢用百分比的透明度,而Android基本是16进制。每次我都懒得计算,所以,我就索性从网上找了对照表,每次就对着表查,人太懒太笨真的是件很苦恼的事情。

100% — FF
99% — FC
98% — FA
97% — F7
96% — F5
95% — F2
94% — F0
93% — ED
92% — EB
91% — E8
90% — E6
89% — E3
88% — E0
87% — DE
86% — DB
85% — D9
84% — D6
83% — D4
82% — D1
81% — CF
80% — CC
79% — C9
78% — C7
77% — C4
76% — C2
75% — BF
74% — BD
73% — BA
72% — B8
71% — B5
70% — B3
69% — B0
68% — AD
67% — AB
66% — A8
65% — A6
64% — A3
63% — A1
62% — 9E
61% — 9C
60% — 99
59% — 96
58% — 94
57% — 91
56% — 8F
55% — 8C
54% — 8A
53% — 87
52% — 85
51% — 82
50% — 80
49% — 7D
48% — 7A
47% — 78
46% — 75
45% — 73
44% — 70
43% — 6E
42% — 6B
41% — 69
40% — 66
39% — 63
38% — 61
37% — 5E
36% — 5C
35% — 59
34% — 57
33% — 54
32% — 52
31% — 4F
30% — 4D
29% — 4A
28% — 47
27% — 45
26% — 42
25% — 40
24% — 3D
23% — 3B
22% — 38
21% — 36
20% — 33
19% — 30
18% — 2E
17% — 2B
16% — 29
15% — 26
14% — 24
13% — 21
12% — 1F
11% — 1C
10% — 1A
9% — 17
8% — 14
7% — 12
6% — 0F
5% — 0D
4% — 0A
3% — 08
2% — 05
1% — 03
0% — 00




积累点滴,做好自己~

2018-05-12 20:00:32 zhangphil 阅读数 3628
Android/iOS及设计中ARGB颜色值百分比透明度换算


设计上经常要求对一个颜色值进行一定百分比的透明度,比如给定一个颜色0xFF0000FF(蓝色)要求80%透明,该如何处理呢?80%透明的蓝色值是多少呢?
常见的颜色是RGB表示的,就比如上面的蓝色0xFF0000FF,这个颜色值是16进制表示的,其中0x后面接着的两个16进制数字‘FF’就是ARGB中的‘A’,即alpha。A表示该颜色的不透明度。
A = 00(转为十进制是0)是完全透明;A = FF(转换为十进制是255)是完全不透明。
接着到的后面的每两位表示一个颜色,RGB(R,red;G,green;B,blue)。A值控制着对后面颜色的透明度处理。
计算机中表示颜色的透明度范围是(0 ~ 255,即16进制的00-FF)。0(00)表示完全透明。255(FF)表示完全不透明。
其实透明和不透明是一个硬币的两面,描述的都是一回事。比如说把一个颜色透明80%,换一个角度说是把这个颜色不透明20%。
假设设计要求对某一个颜色的透明80%,也就是说不透明度20% ( 1 - 80% = 20% ),那么就是255 x 20% = 51。51是十进制数字,转为十六进制表示是:33。
此时就可以直接用ARGB表示80%透明后的此种颜色值为:
0x33xxxxxx (最后面的6位即RGB值)
此时,如果是在Android里面,就可以直接把这个颜色值写到xml布局里面,达到透明80%的设计要求。
但是有时候,你可能只能拿到一个具体的int整数型颜色值比如:0xFF0000FF ,没法手动设置0x后面的两位十六进制的不透明度控制值。可现在又要求你在代码运行时动态的对该颜色值进行80%的透明度换算,那怎么办?此时可通过&与运算获得。
比如,已知80%透明度的十六进制值是33。那么就让原始颜色值和0x33FFFFFF(即0x33拼接六位FFFFFF)进行&与运算,例如:
int oldColor = 0xFF0000FF; //原始颜色
int newColor = oldColor & 0x33FFFFFF;
此时获得的动态计算结果newColor就是80%透明后的颜色值。
下面是一些常见的透明度16进制表,有了此表,基本可以满足常见的透明渐变颜色处理,不管是动态的还是静态的,静态的就在原始颜色前加上表中的十六进制值,如果是动态的,就按上面说的&与运算获得:

透明度	16进制值
100%	00
95%	0D
90%	1A
85%	26
80%	33
75%	40
70%	4D
65%	59
60%	66
55%	73
50%	80
45%	8C
40%	99
35%	A6
30%	B3
25%	BF
20%	CC
15%	D9
10%	E6
5%	F2
0%	FF


2018-02-27 15:40:29 iOS_MingXing 阅读数 291
新建 .swift 文件
给颜色 UIColor 添加扩展

import Foundation
import UIKit

extension UIColor{
    convenience init(valueStr:String) {
        let scanner:Scanner = Scanner(string:valueStr)
        var valueRGB:UInt32 = 0
        if scanner.scanHexInt32(&valueRGB) == false {
            self.init(red: 0,green: 0,blue: 0,alpha: 0)
        }else{
            self.init(
                red:CGFloat((valueRGB & 0xFF0000)>>16)/255.0,
                green:CGFloat((valueRGB & 0x00FF00)>>8)/255.0,
                blue:CGFloat(valueRGB & 0x0000FF)/255.0,
                alpha:CGFloat(1.0)
            )
        }
    }
}


使用:
we.backgroundColor = UIColor.init(valueStr: "c8c8c8")

IOS开发常用宏定义

阅读数 985

没有更多推荐了,返回首页