खोज…


UIColor बनाना

कई तरीके हैं जिनसे आप एक UIColor बना सकते हैं:

तीव्र

  • पूर्वनिर्धारित रंगों में से एक का उपयोग करना:

    let redColor = UIColor.redColor()
    let blueColor: UIColor = .blueColor()
    
    // In Swift 3, the "Color()" suffix is removed:
    let redColor = UIColor.red
    let blueColor: UIColor = .blue
    

    यदि कंपाइलर को पहले से पता है कि वेरिएबल UIColor का एक उदाहरण है, तो आप टाइप को एक साथ छोड़ सकते हैं:

    let view = UIView()
    view.backgroundColor = .yellowColor()
    
  • ग्रेस्केल मूल्य और अल्फा का उपयोग करना:

    let grayscaleColor = UIColor(white: 0.5, alpha: 1.0)
    
  • ह्यू, संतृप्ति, चमक और अल्फा का उपयोग करना:

    let hsbColor = UIColor(
        hue: 0.4,
        saturation: 0.3,
        brightness: 0.7,
        alpha: 1.0
    )
    
  • RGBA मानों का उपयोग करना:

    let rgbColor = UIColor(
        red: 30.0 / 255, 
        green: 70.0 / 255, 
        blue: 200.0 / 255, 
        alpha: 1.0
    )
    
  • एक पैटर्न छवि का उपयोग करना:

    let patternColor = UIColor(patternImage: UIImage(named: "myImage")!)
    

उद्देश्य सी

  • पूर्वनिर्धारित रंगों में से एक का उपयोग करना:

    UIColor *redColor = [UIColor redColor];
    
  • ग्रेस्केल मूल्य और अल्फा का उपयोग करना:

    UIColor *grayscaleColor = [UIColor colorWithWhite: 0.5 alpha: 1.0];
    
  • ह्यू, संतृप्ति, चमक और अल्फा का उपयोग करना:

    UIColor *hsbColor = [UIColor
        colorWithHue: 0.4
        saturation: 0.3
        brightness: 0.7
        alpha: 1.0
    ];
    
  • RGBA मानों का उपयोग करना:

    UIColor *rgbColor = [UIColor
        colorWithRed: 30.0 / 255.0
        green: 70.0 / 255.0
        blue: 200.0 / 255.0 
        alpha: 1.0
    ];
    
  • एक पैटर्न छवि का उपयोग करना:

    UIColor *pattenColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]];
    

अनजाने तरीके

UIColor पर विभिन्न प्रकार के अनिर्दिष्ट तरीके हैं जो वैकल्पिक रंगों या कार्यक्षमता को उजागर करते हैं। इन्हें UIColor निजी हेडर फ़ाइल में पाया जा सकता है। मैं दो निजी तरीकों, styleString() और _systemDestructiveTintColor() के उपयोग का दस्तावेजीकरण styleString()

styleString

IOS 2.0 के बाद से UIColor पर एक निजी इंस्टेंस मेथड है, जिसे styleString कहा जाता है जो RGB RGB या RGBA स्ट्रिंग प्रतिनिधित्व करता है, यहां तक कि whiteColor बाहर whiteColor कलर जैसे रंग भी।

उद्देश्य सी:

@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)

_systemDestructiveTintColor()

UIColor पर एक _systemDestructiveTintColor वर्ग विधि है, जिसे _systemDestructiveTintColor कहा जाता है, जो विनाशकारी सिस्टम बटन द्वारा उपयोग किए गए लाल रंग को लौटाएगा:

let red = UIColor.performSelector("_systemDestructiveTintColor").takeUnretainedValue()

यह एक अप्रबंधित वस्तु देता है, जिसे आपको .takeUnretainedValue() पर कॉल करना होगा, क्योंकि रंग का स्वामित्व हमारी स्वयं की वस्तु पर स्थानांतरित नहीं किया गया है।

किसी भी अनिर्दिष्ट एपीआई के साथ, आपको इस पद्धति का उपयोग करने की कोशिश करते समय सावधानी बरतनी चाहिए:

if UIColor.respondsToSelector("_systemDestructiveTintColor") {
    if let red = UIColor.performSelector("_systemDestructiveTintColor").takeUnretainedValue() as? UIColor {
        // use the color
    }
}

या किसी प्रोटोकॉल का उपयोग करके:

@objc protocol UIColorPrivateStatic {
    func _systemDestructiveTintColor() -> UIColor
}

let privateClass = UIColor.self as! UIColorPrivateStatic
privateClass._systemDestructiveTintColor() // UIDeviceRGBColorSpace 1 0.231373 0.188235 1

अल्फा घटक के साथ रंग

आप init(red:_,green:_,blue:_,alpha:_) initializer का उपयोग कर एक नया बनाने के बिना एक निश्चित UIColor लिए अस्पष्टता सेट कर सकते हैं।

तीव्र

let colorWithAlpha = UIColor.redColor().colorWithAlphaComponent(0.1)

स्विफ्ट 3

//In Swift Latest Version
_ colorWithAlpha = UIColor.red.withAlphaComponent(0.1)

उद्देश्य सी

UIColor * colorWithAlpha = [[UIColor redColor] colorWithAlphaComponent:0.1];

उपयोगकर्ता परिभाषित विशेषताएँ CGColor डेटाटाइप लागू करें

डिफ़ॉल्ट रूप से, इंटरफ़ेस बिल्डर CGColor डेटाटाइप को स्वीकार नहीं करता है, इसलिए इंटरफ़ेस बिल्डर में उपयोगकर्ता परिभाषित विशेषताओं का उपयोग करके CGColor जोड़ने की अनुमति देता है; कोई इस तरह से एक्सटेंशन का उपयोग करना चाहता है:

स्विफ्ट एक्सटेंशन:

extension CALayer {
    func borderUIColor() -> UIColor? {
        return borderColor != nil ? UIColor(CGColor: borderColor!) : nil
    }
    
    func setBorderUIColor(color: UIColor) {
        borderColor = color.CGColor
    }
}

नए उपयोगकर्ता परिभाषित विशेषता (बॉर्डर यूक्लोर) को समस्याओं के बिना पहचाना और लागू किया जाएगा।

यहाँ छवि विवरण दर्ज करें

हेक्साडेसिमल संख्या या स्ट्रिंग से एक UIColor बनाना

आप एक हेक्साडेसिमल संख्या या स्ट्रिंग, जैसे 0xff00cc, "# FFFFF" से एक UIColor बना सकते हैं

तीव्र

इंट वैल्यू

extension UIColor {
    convenience init(hex: Int, alpha: CGFloat = 1.0) {
        let r = CGFloat((hex >> 16) & 0xff) / 255
        let g = CGFloat((hex >> 08) & 0xff) / 255
        let b = CGFloat((hex >> 00) & 0xff) / 255
        self.init(red: r, green: g, blue: b, alpha: alpha)
    }
}

उदाहरण:

let color = UIColor(hex: 0xff00cc, alpha: 1.0)

ध्यान दें कि alpha लिए 1.0 का डिफ़ॉल्ट मान प्रदान किया गया है, इसलिए इसका उपयोग निम्नानुसार किया जा सकता है:

let color = UIColor(hex: 0xff00cc)

स्ट्रिंग मान

extension UIColor {
    convenience init(hexCode: String) {
        let hex = hexCode.stringByTrimmingCharactersInSet(NSCharacterSet.alphanumericCharacterSet().invertedSet)
        var int = UInt32()
        NSScanner(string: hex).scanHexInt(&int)
        let a, r, g, b: UInt32

        switch hex.characters.count {
        case 3:
            (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)
        case 6:
            (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)
        case 8:
            (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)
        default:
            (a, r, g, b) = (1, 1, 1, 0)
        }
    
        self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255)
    }
}

उदाहरण उपयोग:

अल्फा के साथ हेक्स

let color = UIColor("#80FFFFFF")

कोई अल्फा के साथ हेक्स ( color अल्फा 1.0 के बराबर होगा)

let color = UIColor("#FFFFFF")
let color = UIColor("#FFF")

उद्देश्य सी

इंट वैल्यू

@interface UIColor (Hex)
+ (UIColor *)colorWithHex:(NSUInteger)hex alpha:(CGFloat)alpha;
@end

@implementation UIColor (Hex)
+ (UIColor *)colorWithHex:(NSUInteger)hex alpha:(CGFloat)alpha {
    return [UIColor colorWithRed:((CGFloat)((hex & 0xFF0000) >> 16))/255.0
                           green:((CGFloat)((hex & 0xFF00) >> 8))/255.0
                            blue:((CGFloat)(hex & 0xFF))/255.0
                           alpha:alpha];
}
@end

उदाहरण:

UIColor *color = [UIColor colorWithHex:0xff00cc alpha:1.0];

स्ट्रिंग मान

- (UIColor*) hex:(NSString*)hexCode {
    
    NSString *noHashString = [hexCode stringByReplacingOccurrencesOfString:@"#" withString:@""];
    NSScanner *scanner = [NSScanner scannerWithString:noHashString];
    [scanner setCharactersToBeSkipped:[NSCharacterSet symbolCharacterSet]];
    
    unsigned hex;
    if (![scanner scanHexInt:&hex]) return nil;
    int a;
    int r;
    int g;
    int b;

    switch (noHashString.length) {
        case 3:
            a = 255;
            r = (hex >> 8) * 17;
            g = ((hex >> 4) & 0xF) * 17;
            b = ((hex >> 0) & 0xF) * 17;
            break;
        case 6:
            a = 255;
            r = (hex >> 16);
            g = (hex >> 8) & 0xFF;
            b = (hex) & 0xFF;
            break;
        case 8:
            a = (hex >> 24);
            r = (hex >> 16) & 0xFF;
            g = (hex >> 8) & 0xFF;
            b = (hex) & 0xFF;
            break;
            
        default:
            a = 255.0;
            r = 255.0;
            b = 255.0;
            g = 255.0;
            break;
    }

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

उदाहरण उपयोग:

अल्फा के साथ हेक्स

UIColor* color = [self hex:@"#80FFFFFF"];

कोई अल्फा के साथ हेक्स ( color अल्फा 1 बराबर होगा)

UIColor* color = [self hex:@"#FFFFFF"];
UIColor* color = [self hex:@"#FFF"];

UIColor से रंग की चमक समायोजित

नीचे दिए गए कोड का उदाहरण आपको उस रंग का एक समायोजित संस्करण देगा जहां एक उच्च प्रतिशत उज्जवल होगा और एक कम प्रतिशत गहरा होगा।

उद्देश्य सी

+ (UIColor *)adjustedColorForColor:(UIColor *)c : (double)percent
{
    if (percent < 0) percent = 0;
    
    CGFloat r, g, b, a;
    if ([c getRed:&r green:&g blue:&b alpha:&a])
        return [UIColor colorWithRed:MAX(r * percent, 0.0)
                               green:MAX(g * percent, 0.0)
                                blue:MAX(b * percent, 0.0)
                               alpha:a];
    return nil;
}

तीव्र

func adjustedColorForColor( c: UIColor, var percent: CGFloat) -> UIColor {
    if percent < 0 {
        percent = 0
    }

    var r,g,b,a: CGFloat
    r = 0.0
    g = 0.0
    b = 0.0
    a = 0.0

    if c.getRed(&r, green: &g, blue: &b, alpha: &a) {
        return UIColor(red: max(r * percent, 0.0), green: max(g * percent, 0.0), blue: max(b * percent, 0.0), alpha: a)
    }

    return UIColor()
}

छवि पैटर्न से UIColor

आप UIColor(patternImage:_) विधि का उपयोग करके एक छवि पैटर्न का उपयोग करके एक UIColor ऑब्जेक्ट बना सकते हैं।

btn.backgroundColor = UIColor(patternImage: UIImage(named: "image")!)

यहाँ छवि विवरण दर्ज करें

किसी दिए गए UIColor का हल्का और गहरा शेड

नीचे दिए गए कोड का उदाहरण दिखाता है कि आप किसी दिए गए रंग का हल्का और गहरा छाया कैसे प्राप्त कर सकते हैं, गतिशील विषयों वाले अनुप्रयोगों में उपयोगी है

गहरे रंग के लिए

+ (UIColor *)darkerColorForColor:(UIColor *)c
{
    CGFloat r, g, b, a;
    if ([c getRed:&r green:&g blue:&b alpha:&a])
        return [UIColor colorWithRed:MAX(r - 0.2, 0.0)
                               green:MAX(g - 0.2, 0.0)
                                blue:MAX(b - 0.2, 0.0)
                               alpha:a];
    return nil;
}

हल्का रंग के लिए

+ (UIColor *)lighterColorForColor:(UIColor *)c
{
    CGFloat r, g, b, a;
    if ([c getRed:&r green:&g blue:&b alpha:&a])
        return [UIColor colorWithRed:MIN(r + 0.2, 1.0)
                               green:MIN(g + 0.2, 1.0)
                                blue:MIN(b + 0.2, 1.0)
                               alpha:a];
    return nil;
}

दिए गए रंग पर विचार करते हुए नीचे दिए गए दृश्य अंतर देखें [UIColor orangeColor]

विजुअल डेमो



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow