2015-07-02 2 views
1

У меня есть изображение, которое измеряет 480px x 480px, и я хотел бы отобразить его в представлении, которое измеряет 375px x 375px, используя CGContextDrawImage, как показано ниже. На данный момент изображение не масштабируется, чтобы соответствовать представлению - оно нарисовано в полном размере. Как я могу настроить код ниже, чтобы масштабировать изображение, чтобы оно соответствовало виду?Масштабирование UIImage для использования с CGContextDrawImage

self.image = [UIImage imageNamed:@"image2.png"]; 
    CGContextRef layerContext = CGLayerGetContext(drawingLayer); 
    CGContextSaveGState(layerContext); 
    UIGraphicsBeginImageContext (self.viewRect.size); 
    CGContextTranslateCTM(layerContext, 0, self.image.size.width); 
    CGContextScaleCTM(layerContext, 1.0, -1.0); 
    CGContextDrawImage(layerContext, self.viewRect, self.image.CGImage); 
    UIGraphicsEndImageContext(); 
    CGContextRestoreGState(layerContext); 

ответ

2

Функция CGContextDrawImage будет масштабировать рисунок изображения в соответствии с представлением. Как указано в документации для этой функции:

Рисует изображение в графическом контексте.

Кварц масштабирует изображение - непропорционально, если необходимо - для соответствия границам, указанным параметром rect.

Единственное, что выглядит весьма подозреваемый является линия, которая говорит:

CGContextTranslateCTM(layerContext, 0, self.image.size.width); 

Во-первых, вы хотите перевести вертикально на высоту, а не по ширине. Во-вторых, вы хотите перевести на высоту viewRect, а не image. Таким образом:

CGContextTranslateCTM(layerContext, 0, self.viewRect.size.height); 

Если изображение все еще не получает масштабируется правильно, я предлагаю вам перепроверить viewRect. Но CGContextDrawImage определенно рисует изображение в пределах указанного CGRect.

Смежные вопросы