Mam ten kod roboczy:Dlaczego mój CGGradient nie działa z ustawionym 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);
Deklaracje kolorów są częścią mnie interesuje, linie 2 i 4. Kiedy zadeklarować je jak pokazano, pracują dobrze, ale jeśli mogę zastąpić te dwa linie z odpowiednikiem (przynajmniej pomyślałem) [UIColor blackColor]
i [UIColor clearColor]
, wtedy moje gradienty znikają. Kolory, których używam, nie mają znaczenia, mogę używać greenColor
i redColor
i nadal nie działają.
Czy brakuje mi czegoś lub czy jest to błąd w frameworkach Apple'a?
Kod, który nie pracy. A to tylko pierwsza sekcja, wszystko inne jest takie samo.
NSMutableArray *shadowColors = [NSMutableArray arrayWithCapacity:2];
color = [UIColor blackColor];
[shadowColors addObject:(id)[color CGColor]];
color = [UIColor clearColor];
[shadowColors addObject:(id)[color CGColor]];
Czy możesz pokazać * dokładnie * jak wygląda twój kod, który nie działa? PS: Dlaczego rzucasz cokolwiek na id? To nie ma sensu. – Eiko
Przesyłanie do identyfikatora powoduje usunięcie ostrzeżenia "przekazywanie argumentów z niezgodnego wskaźnika". – kubi
oh, a ja zaktualizowałem moje pytanie za pomocą niedziałającego kodu. – kubi