[iOS] UIColor+Change 색상 클래스의 클래스 확장

색상 클래스 UIColor의 토대 위에서 클래스(Category)로 확장되었습니다.
주요 기능은 다음과 같습니다.
  • 색상 객체에 대한 RGB 수치
  • 얻기
       -(CGFloat)getRGB;
    설명: 이 방법은 인터넷에서 유행하는 방법에 있어서 약간의 개선을 하였다.
    흑회백색 직접 얻을 수 없는 색깔을 특수 처리했다.
    RGB 값을 추가로 가져올 수 없는 경우에는 기본적으로 0, 0, 0.
  • 색상 대상을 canvas용 문자열 형식으로 변환
  •     -(NSString *)canvasColorString;
  • 색상 객체를 웹용 문자열 형식으로 변환
  •     -(NSString *)webColorString;
  • 색상 객체를 강조
  •     -(UIColor *)lighten;
  • 색상 객체를 어둡게
  •     -(UIColor *)darken;
  • 두 색상 객체를 혼합
  •     
    -(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>

    좋은 웹페이지 즐겨찾기