J'ai ce code de travail:Pourquoi mon CGGradient ne fonctionne-t-il pas avec un UIColor prédéfini?
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);
Les déclarations de couleur sont la partie que je suis intéressé, les lignes 2 et 4. Quand je les déclarer comme le montre, ils fonctionnent très bien, mais si je remplace ces deux lignes avec l'équivalent (je pensais, au moins) [UIColor blackColor]
et [UIColor clearColor]
puis mes gradients disparaissent. Les couleurs que j'utilise ne font aucune différence, je peux utiliser greenColor
et redColor
et elles ne fonctionnent toujours pas.
Ai-je raté quelque chose ou est-ce un bug dans les frameworks d'Apple?
Le code qui ne le fait pas travail. Et ce n'est que la première section, tout le reste est le même.
NSMutableArray *shadowColors = [NSMutableArray arrayWithCapacity:2];
color = [UIColor blackColor];
[shadowColors addObject:(id)[color CGColor]];
color = [UIColor clearColor];
[shadowColors addObject:(id)[color CGColor]];
Pouvez-vous montrer * exactement * à quoi ressemble votre code qui ne fonctionne pas? PS: Pourquoi jetez-vous quelque chose à id? Cela n'a pas de sens. – Eiko
La conversion en id supprime un avertissement "passage d'un argument de type pointeur incompatible". – kubi
oh, et j'ai mis à jour ma question avec le code non-travail. – kubi