2010-10-10 12 views
8

मैं इस काम कर कोड है:मेरा CGGradient प्रीसेट UIColor के साथ क्यों काम नहीं कर रहा है?

NSMutableArray *shadowColors = [NSMutableArray arrayWithCapacity:2]; 
    color = [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; // Declaration using components 
    [shadowColors addObject:(id)[color CGColor]]; 
    color = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.0]; // Declaration using components 
    [shadowColors addObject:(id)[color CGColor]]; 

    CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); 
    CGGradientRef gradient = CGGradientCreateWithColors(space, (CFArrayRef)shadowColors, NULL); 
    CGColorSpaceRelease(space); 

    CGFloat sw = 10.0; // shadow width 

    CGPoint top1 = CGPointMake(x, y+width/2.0); 
    CGPoint top2 = CGPointMake(x + sw, y+width/2.0); 

    CGPoint side1 = CGPointMake(x+width/2.0, y); 
    CGPoint side2 = CGPointMake(x+width/2.0, y+sw); 

    CGContextDrawLinearGradient(c, gradient, top1, top2, 0); 
    CGContextDrawLinearGradient(c, gradient, side1, side2, 0); 
    CGGradientRelease(gradient); 

रंग घोषणाओं हिस्सा मैं में दिलचस्पी रखता हूँ कर रहे हैं, लाइनों 2 और 4. जब मैं उन्हें के रूप में दिखाया, वे तो बस अच्छा काम की घोषणा, लेकिन अगर मैं उन दो की जगह बराबर के साथ लाइनें (मैंने सोचा, कम से कम) [UIColor blackColor] और [UIColor clearColor] तो मेरे ग्रेडियेंट गायब हो गए। मेरे द्वारा उपयोग किए जाने वाले रंगों में कोई फर्क नहीं पड़ता है, मैं greenColor और redColor का उपयोग कर सकता हूं और वे अभी भी काम नहीं करते हैं।

क्या मुझे कुछ याद आ रही है या क्या यह ऐप्पल के ढांचे में एक बग है?


कोड कि काम नहीं करता है। और यह सिर्फ पहला खंड है, बाकी सब कुछ वही है।

NSMutableArray *shadowColors = [NSMutableArray arrayWithCapacity:2]; 
    color = [UIColor blackColor]; 
    [shadowColors addObject:(id)[color CGColor]]; 
    color = [UIColor clearColor]; 
    [shadowColors addObject:(id)[color CGColor]]; 
+0

क्या आप * बिल्कुल * दिखा सकते हैं कि आपका कोड कैसा दिखता है जो काम नहीं करता है? पीएस: आप आईडी पर कुछ क्यों डालते हैं? यह समझ में नहीं आता है। – Eiko

+0

आईडी पर कास्टिंग एक 'असंगत सूचक प्रकार' चेतावनी से गुजरने वाले तर्क से दूर है। – kubi

+0

ओह, और मैंने गैर-कार्य कोड के साथ अपना प्रश्न अपडेट किया। – kubi

उत्तर

1

कोड मुझे ठीक लग रहा है। blackColor और clearColor शायद दोनों एक सफेद रंग की जगह में हैं, लेकिन प्रलेखन का कहना है कि CGGradientCreateWithColors रंगों को आपके द्वारा पारित रंग स्थान में परिवर्तित कर देगा, जिससे इससे कोई फर्क नहीं पड़ता।

एकमात्र चीज जिसे मैं सोच सकता हूं, रंगीन स्थान के लिए NULL पास करने का प्रयास करना होगा, जिससे ग्रेडियेंट डिवाइस आरजीबी के बजाय जेनेरिक आरजीबी में रंगों को परिवर्तित कर देगा। यह काम कर सकता है, लेकिन कोई फर्क नहीं पड़ता-जहां तक ​​मैं देख सकता हूं, इसे किसी भी तरह से काम करना चाहिए।

मैं filing a bug का सुझाव देता हूं।

संबंधित मुद्दे