Почему мое изображение перевернуто после использования 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;

Вот как выглядят контакты после выполнения этого кода.

http://d.pr/i/UaPU

Я думал, что если бы я применил текущую ориентацию изображения к flippedImage, это бы сработало, но это не сработало. Я тоже пробовал настройку self.image = img; и полностью удаляем переменную flippedImage, но результат остается тем же.

1 ответ

Решение

Система координат CGContext перевернута вертикально относительно системы координат UIView. Просто переверните его так: CGContextTranslateCTM(ctx, 0, imageHeight);, CGContextScaleCTM(ctx, 1, -1);

Другие вопросы по тегам