Вы уверены, что ваша цветовая переменная установлена, и что это правильное кодирование строки, чтобы пройти тест isEqualToString? (т.е. вы уверены, что на самом деле нажимаете код, чтобы установить цвет).
Я скопировал ваш код выше, вплоть до создания изображения из контекста, в метод viewDidLoad контроллера представления, а затем добавил изображение в подпредставление представления изображения, и цвет получился правильным.
Это код, который я поместил в метод viewDidLoad контроллера представления - представление закончилось синим кружком на нем, поэтому кажется, что ваш код должен работать:
CGContextSaveGState(UIGraphicsGetCurrentContext());
UIGraphicsBeginImageContext(CGSizeMake(40, 40));
NSString *color = @"blue";
if ([color isEqualToString:@"black"]) {
CGContextSetRGBFillColor(UIGraphicsGetCurrentContext(), 1,0,0, 1);
}
else if ([color isEqualToString:@"red"]) {
CGContextSetRGBFillColor(UIGraphicsGetCurrentContext(), 1.0,0,0, 1);
}
else if ([color isEqualToString:@"green"]) {
CGContextSetRGBFillColor(UIGraphicsGetCurrentContext(), 0,1.0,0, 1);
}
else if ([color isEqualToString:@"blue"]) {
CGContextSetRGBFillColor(UIGraphicsGetCurrentContext(), 0,0,1.0, 1);
}
CGRect rect1 = CGRectMake(0,0,40,40);
CGContextAddEllipseInRect(UIGraphicsGetCurrentContext(),rect1);
CGContextFillPath(UIGraphicsGetCurrentContext());
UIImage *myImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGContextFlush(UIGraphicsGetCurrentContext()) ;
CGContextRestoreGState(UIGraphicsGetCurrentContext());
UIImageView *imgV = [[UIImageView alloc] initWithFrame:CGRectMake(30,30,200,200)];
imgV.image = myImage;
[self.view addSubview:imgV];