2015-07-02 15 views
1

我有一個尺寸爲480x480像素的圖像,我想用下面的CGContextDrawImage來測量375像素x375像素的視圖。此刻圖像不能縮放以適合視圖 - 它將以全尺寸繪製。如何調整下面的代碼來縮放圖像以適合視圖?Scaling 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內縮放的圖像。