[iOS] UIColor+Change 색상 클래스의 클래스 확장
주요 기능은 다음과 같습니다.
-(CGFloat)getRGB;
설명: 이 방법은 인터넷에서 유행하는 방법에 있어서 약간의 개선을 하였다.
흑회백색 직접 얻을 수 없는 색깔을 특수 처리했다.
RGB 값을 추가로 가져올 수 없는 경우에는 기본적으로 0, 0, 0.
-(UIColor *)mix: (UIColor *) c;
블로그 시작 주소:http://blog.csdn.net/duzixi
최신 코드 다운로드 주소:https://github.com/duzixi/UIColor-Change
소스 코드는 다음과 같습니다.
UIColor+Change.h
<span style="font-size:14px;">//
// UIColor+Change.h
// ChangeColor
//
// Created by on 14-3-13.
// Edited by on 14-5-23.
// Edited by on 14-7-12. for Canvas.
// Copyright (c) 2014 lanou3g.com All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIColor (Change)
/// canvas
- (NSString *)canvasColorString;
///
- (NSString *) webColorString;
/// RGB
- (CGFloat *) getRGB;
///
- (UIColor *) lighten;
///
- (UIColor *) darken;
///
- (UIColor *) mix: (UIColor *) color;
@end
</span>
UIColor+Change.m
<span style="font-size:14px;">//
// UIColor+Change.m
// ChangeColor
//
// Created by on 14-3-13.
// Edited by on 14-5-23.
// Edited by on 14-7-12. for Canvas.
// Copyright (c) 2014 lanou3g.com All rights reserved.
//
#import "UIColor+Change.h"
@implementation UIColor (Change)
/// canvas
- (NSString *)canvasColorString
{
CGFloat *arrRGBA = [self getRGB];
int r = arrRGBA[0] * 255;
int g = arrRGBA[1] * 255;
int b = arrRGBA[2] * 255;
float a = arrRGBA[3];
return [NSString stringWithFormat:@"rgba(%d,%d,%d,%f)", r, g, b, a];
}
///
- (NSString *)webColorString
{
CGFloat *arrRGBA = [self getRGB];
int r = arrRGBA[0] * 255;
int g = arrRGBA[1] * 255;
int b = arrRGBA[2] * 255;
NSLog(@"%d,%d,%d", r, g, b);
NSString *webColor = [NSString stringWithFormat:@"#%02X%02X%02X", r, g, b];
return webColor;
}
///
- (UIColor *) lighten
{
CGFloat *rgb = [self getRGB];
CGFloat r = rgb[0];
CGFloat g = rgb[1];
CGFloat b = rgb[2];
CGFloat alpha = rgb[3];
r = r + (1 - r) / 6.18;
g = g + (1 - g) / 6.18;
b = b + (1 - b) / 6.18;
UIColor * uiColor = [UIColor colorWithRed:r green:g blue:b alpha:alpha];
return uiColor;
}
- (UIColor *) darken{ //
CGFloat *rgb = [self getRGB];
CGFloat r = rgb[0];
CGFloat g = rgb[1];
CGFloat b = rgb[2];
CGFloat alpha = rgb[3];
r = r * 0.618;
g = g * 0.618;
b = b * 0.618;
UIColor *uiColor = [UIColor colorWithRed:r green:g blue:b alpha:alpha];
return uiColor;
}
- (UIColor *) mix: (UIColor *) color{
CGFloat * rgb1 = [self getRGB];
CGFloat r1 = rgb1[0];
CGFloat g1 = rgb1[1];
CGFloat b1 = rgb1[2];
CGFloat alpha1 = rgb1[3];
CGFloat * rgb2 = [color getRGB];
CGFloat r2 = rgb2[0];
CGFloat g2 = rgb2[1];
CGFloat b2 = rgb2[2];
CGFloat alpha2 = rgb2[3];
//mix them!!
CGFloat r = (r1 + r2) / 2.0;
CGFloat g = (g1 + g2) / 2.0;
CGFloat b = (b1 + b2) / 2.0;
CGFloat alpha = (alpha1 + alpha2) / 2.0;
UIColor * uiColor = [UIColor colorWithRed:r green:g blue:b alpha:alpha];
return uiColor;
}
- (CGFloat *) getRGB{
UIColor * uiColor = self;
CGColorRef cgColor = [uiColor CGColor];
int numComponents = CGColorGetNumberOfComponents(cgColor);
if (numComponents == 4){
static CGFloat * components = Nil;
components = (CGFloat *) CGColorGetComponents(cgColor);
return (CGFloat *)components;
} else { //
static CGFloat components[4] = {0};
CGFloat f = 0;
// RGB
if ([uiColor isEqual:[UIColor whiteColor]]) {
f = 1.0;
} else if ([uiColor isEqual:[UIColor lightGrayColor]]) {
f = 0.8;
} else if ([uiColor isEqual:[UIColor grayColor]]) {
f = 0.5;
}
components[0] = f;
components[1] = f;
components[2] = f;
components[3] = 1.0;
return (CGFloat *)components;
}
}
@end</span>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
xcode-select: error: tool'xcodebuild'requires Xcode 오류 해결 방법다음 명령으로 원본 코드를 보려고 할 때 오류가 발생했습니다. 힌트 깜빡했네, 컴퓨터 xcode를 바꾸면 안 돼?인터넷에서 조사한 결과 xcode 경로에 문제가 있기 때문인데 아마도 두 개의 xcode를 설치했기 때...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.