Почему мое изображение перевернуто после использования CGContextSetFillColorWithColor
Я пытаюсь применить цветовую заливку к MKAnnotation. Я нашел код, который в значительной степени работает, но по какой-то причине заполненное изображение перевернулось после применения к нему заливки.
Вот текущий код, который я запускаю на карте.
CGRect rect = CGRectMake(0, 0, self.image.size.width, self.image.size.height);
UIGraphicsBeginImageContext(self.image.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClipToMask(context, rect, self.image.CGImage);
CGContextSetFillColorWithColor(context, [[UIColor grayColor] CGColor]);
CGContextFillRect(context, rect);
CGContextRotateCTM(context, 90);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImage *flippedImage = [UIImage imageWithCGImage:img.CGImage
scale:1.0 orientation:self.image.imageOrientation];
self.image = flippedImage;
Вот как выглядят контакты после выполнения этого кода.
Я думал, что если бы я применил текущую ориентацию изображения к flippedImage, это бы сработало, но это не сработало. Я тоже пробовал настройку self.image = img;
и полностью удаляем переменную flippedImage, но результат остается тем же.
1 ответ
Решение
Система координат CGContext перевернута вертикально относительно системы координат UIView. Просто переверните его так: CGContextTranslateCTM(ctx, 0, imageHeight);, CGContextScaleCTM(ctx, 1, -1);