मैं निम्नलिखित कोड का उपयोग करके एक कलर ऑब्जेक्ट बना रहा हूं।
curView.backgroundColor = [[UIColor alloc] initWithHue:229 saturation:40 brightness:75 alpha:1];
मैं बनाई गई रंग वस्तु से RGB मान कैसे प्राप्त कर सकता हूं?
मैं निम्नलिखित कोड का उपयोग करके एक कलर ऑब्जेक्ट बना रहा हूं।
curView.backgroundColor = [[UIColor alloc] initWithHue:229 saturation:40 brightness:75 alpha:1];
मैं बनाई गई रंग वस्तु से RGB मान कैसे प्राप्त कर सकता हूं?
जवाबों:
const CGFloat *colors = CGColorGetComponents( curView.backgroundColor.CGColor );
ये लिंक आगे का विवरण प्रदान करते हैं:
colors
, तो आप कुछ लिख सकते हैं, जैसेCGFloat red = colors[0];
error: <EXPR>:3:1: error: 'CGColorGetComponents' has been replaced by property 'CGColor.components'
IOS 5 में आप उपयोग कर सकते हैं:
CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha =0.0;
[multipliedColor getRed:&red green:&green blue:&blue alpha:&alpha];
NSKeyedArchiver
, जैसे:multipliedColor = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject: multipliedColor]];
स्विफ्ट 3 और 4
मैंने पाया कि cgColor.compords हमेशा 4 रंग मान नहीं लौटाएगा, इसलिए मैंने इसे बदल दिया ताकि यह उन्हें CIC के टॉपर से मिल जाए
extension UIColor {
var redValue: CGFloat{ return CIColor(color: self).red }
var greenValue: CGFloat{ return CIColor(color: self).green }
var blueValue: CGFloat{ return CIColor(color: self).blue }
var alphaValue: CGFloat{ return CIColor(color: self).alpha }
}
स्विफ्ट 2
extension UIColor {
var red: CGFloat{ return CGColorGetComponents(self.CGColor)[0] }
var green: CGFloat{ return CGColorGetComponents(self.CGColor)[1] }
var blue: CGFloat{ return CGColorGetComponents(self.CGColor)[2] }
var alpha: CGFloat{ return CGColorGetComponents(self.CGColor)[3] }
}
यह सबसे कुशल तरीका नहीं है, इसलिए मैं इसका उपयोग नहीं करूंगा जहां एक दृश्य लगातार फिर से खींचा जाएगा।
उम्मीद है कि यह मददगार होगा
CGFloat red, green, blue, alpha;
//Create a sample color
UIColor *redColor = [UIColor redColor];
//Call
[redColor getRed: &red
green: &green
blue: &blue
alpha: &alpha];
NSLog(@"red = %f. Green = %f. Blue = %f. Alpha = %f",
red,
green,
blue,
alpha);
बस इसके लिए एक श्रेणी बना दी।
NSLog(@"%f", [UIColor blueColor].blue); // 1.000000
कुछ इस तरह जाता है:
typedef enum { R, G, B, A } UIColorComponentIndices;
@implementation UIColor (EPPZKit)
-(CGFloat)red
{ return CGColorGetComponents(self.CGColor)[R]; }
-(CGFloat)green
{ return CGColorGetComponents(self.CGColor)[G]; }
-(CGFloat)blue
{ return CGColorGetComponents(self.CGColor)[B]; }
-(CGFloat)alpha
{ return CGColorGetComponents(self.CGColor)[A]; }
@end
eppz!kit
अधिक UIColor माल के साथ का हिस्सा ।
UIColor *color = [[UIColor greenColor] retain]; //line 1
//OR(You will have color variable either like line 1 or line 2)
color = curView.backgroundColor;//line 2
CGColorRef colorRef = [color CGColor];
int _countComponents = CGColorGetNumberOfComponents(colorRef);
if (_countComponents == 4) {
const CGFloat *_components = CGColorGetComponents(colorRef);
CGFloat red = _components[0];
CGFloat green = _components[1];
CGFloat blue = _components[2];
CGFloat alpha = _components[3];
NSLog(@"%f,%f,%f,%f",red,green,blue,alpha);
}
[color release];
डेविड रीस के उत्तर का स्विफ्ट 3 संस्करण:
extension UIColor {
var redValue: CGFloat{
return cgColor.components! [0]
}
var greenValue: CGFloat{
return cgColor.components! [1]
}
var blueValue: CGFloat{
return cgColor.components! [2]
}
var alphaValue: CGFloat{
return cgColor.components! [3]
}
}
IOS 2.0 के बाद से एक निजी इंस्टेंस विधि है, UIColor
जिसे styleString
आरजीबी या RGBA स्ट्रिंग प्रतिनिधित्व का रंग मिलता है, यहां तक कि RGB स्थान के बाहर व्हाइट कलर जैसे रंग भी।
उद्देश्य सी:
@interface UIColor (Private)
- (NSString *)styleString;
@end
// ...
[[UIColor whiteColor] styleString]; // rgb(255,255,255)
[[UIColor redColor] styleString]; // rgb(255,0,0)
[[UIColor lightTextColor] styleString]; // rgba(255,255,255,0.600000)
स्विफ्ट में आप इंटरफ़ेस को उजागर करने के लिए एक ब्रिजिंग हेडर का उपयोग कर सकते हैं। शुद्ध स्विफ्ट के साथ, आपको @objc
निजी पद्धति और प्रोटोकॉल के साथ एक प्रोटोकॉल बनाने की आवश्यकता होगी unsafeBitCast
UIColor
:
@objc protocol UIColorPrivate {
func styleString() -> String
}
let white = UIColor.whiteColor()
let red = UIColor.redColor()
let lightTextColor = UIColor.lightTextColor()
let whitePrivate = unsafeBitCast(white, UIColorPrivate.self)
let redPrivate = unsafeBitCast(red, UIColorPrivate.self)
let lightTextColorPrivate = unsafeBitCast(lightTextColor, UIColorPrivate.self)
whitePrivate.styleString() // rgb(255,255,255)
redPrivate.styleString() // rgb(255,0,0)
lightTextColorPrivate.styleString() // rgba(255,255,255,0.600000)
शीर्ष मतदान का उत्तर पुराना है:
त्रुटि: 3: 1: त्रुटि: 'CGColorGetCompords' को संपत्ति 'CGColor.compords' ने बदल दिया है
इसके बजाय, उपयोग करें
myUIColor.cgColor.components
मैं UITableViewStyle
"UITableViewStyleGrouped" की पृष्ठभूमि का रंग प्राप्त करना चाहता था, इसलिए viewDidAppear:
विधि में मैंने कोड जोड़ा:
NSLog(@"%@", self.tableView.backgroundView.backgroundColor);
यह वही है जो मैंने प्रत्याशित किया और लॉग लौटाया:
UIDeviceRGBColorSpace 0.937255 0.937255 0.956863 1
तो संक्षेप में बस टाइप करें NSLog(@"%@", [UIColor whateverColor]);
HandyUIKit का उपयोग करना यह वास्तव में आसान बनाता है :
import HandyUIKit
let color = UIColor(red: 0.1, green: 0.2, blue: 0.3, alpha: 0.4)
// get any of the rgba values
color.rgba.red // => 0.1
color.rgba.green // => 0.2
color.rgba.blue // => 0.3
color.rgba.alpha // => 0.4
मान प्राप्तhsba
करने के लिए एक समान विकल्प भी है :
let color = UIColor(hue: 0.1, saturation: 0.2, brightness: 0.3, alpha: 0.4)
// you can get any of the hsba values, too
color.hsba.hue // => 0.1
color.hsba.saturation // => 0.2
color.hsba.brightness // => 0.3
color.hsba.alpha // => 0.4
बस इसे Carthage का उपयोग करके इंस्टॉल करें और आप जाने के लिए अच्छा है।
मुझे उम्मीद है यह मदद करेगा!
कुछ उपयोगी मैक्रो मैंने इसके और अन्य रंग नियंत्रणों के लिए बनाए हैं:
आपके मामले में आप बस इस्तेमाल करेंगे
getRGBA(myColor, red, green, blue, alpha);
NSLog(@"Red Value: %f", red);
NSLog(@"Blue Value: %f", green);
NSLog(@"Green Value: %f", blue);
#define rgba(r,g,b,a) [UIColor colorWithRed:((float)(r))/255.0f green:((float)(g))/255.0f blue:((float)(b))/255.0f alpha:a]
#define rgb(r,g,b) rgba(r, g, b, 1.0f)
#define rgbaf(r,g,b,a) [UIColor colorWithRed:(r) green:(g) blue:(b) alpha:a]
#define rgbf(r,g,b) rgbaf(r, g, b, 1.0f)
#define rgba_fromColor(__color, __r, __g, __b, __a) \
CGFloat __r, __g, __b, __a;\
UIColor *__unpackedColor = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:__color]];/*Bring system colors into compatible color-space (e.g. DarkGrayColor)*/\
[__unpackedColor getRed:&__r green:&__g blue:&__b alpha:&__a];
#define getRGBA(__color, __r, __g, __b, __a) hsba_fromColor(__color, __r, __g, __b, __a)
#define getRed(__color) (\
(^float (void){\
rgba_fromColor(__color, r, g, b, a);\
return r;\
})()\
)
#define getGreen(__color) (\
(^float (void){\
rgba_fromColor(__color, r, g, b, a);\
return g;\
})()\
)
#define getBlue(__color) (\
(^float (void){\
rgba_fromColor(__color, r, g, b, a);\
return b;\
})()\
)
#define getAlpha(__color) (\
(^float (void){\
rgba_fromColor(__color, r, g, b, a);\
return a;\
})()\
)
#define hsba(h,s,b,a) [UIColor colorWithHue:((float)(h))/360.0f saturation:((float)(s))/100.0f brightness:((float)(b))/100.0f alpha:a]
#define hsb(h,s,b) hsba(h, s, b, 1.0f)
#define hsbaf(h,s,b,a) [UIColor colorWithHue:(h) saturation:(s) brightness:(b) alpha:a]
#define hsbf(h,s,b) rgbaf(h, s, b, 1.0f)
#define hsba_fromColor(__color, __h, __s, __b, __a) \
CGFloat __h, __s, __b, __a;\
UIColor *__unpackedColor = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:__color]];/*Bring system colors into compatible color-space (e.g. DarkGrayColor)*/\
[__unpackedColor getHue:&__h saturation:&__s brightness:&__b alpha:&__a];
#define getHSBA(__color, __h, __s, __b, __a) rgba_fromColor(__color, __h, __s, __b, __a)
#define getHue(__color) (\
(^float (void){\
hsba_fromColor(__color, h, s, b, a);\
return h;\
})()\
)
#define getSaturation(__color) (\
(^float (void){\
hsba_fromColor(__color, h, s, b, a);\
return s;\
})()\
)
#define getBrightness(__color) (\
(^float (void){\
hsba_fromColor(__color, h, s, b, a);\
return b;\
})()\
)
/*
///already defined in RGBA macros
#define getAlpha(__color) (\
(^float (void){\
hsba_fromColor(__color, h, s, b, a);\
return a;\
})()\
)
*/