2010-11-20 11 views
1

1.Ich Verwendung unter Code for take screenshot.is es notwendig, sie für eine hohe Auflösung zu ändernProblem über @ 2X

UIGraphicsBeginImageContext(self.view.bounds.size); 
[self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

2.what passiert, wenn ich nur mit 640 * 960 Auflösung ein Bild verwenden für sowohl niedrige als auch hohe Qualität? (bedeutet, dass kein Bild mit 2x verwendet wird)

Antwort

3

Das wird nur normale (320x480) Auflösung Screenshots. Also in Antwort auf 1, ja. Geräte der älteren Generation können auch doppelt auflösen, der Bildschirm kann sie jedoch nicht anzeigen.

Um einen Screenshot an den res des Gerätes nehmen Sie dies tun können:

CGSize size = self.view.bounds.size; 
CGFloat scale = 1.0f; 
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { 
    scale = [[UIScreen mainScreen] scale]; 
    size = CGSizeApplyAffineTransform(size, CGAffineTransformMakeScale(scale, scale)); 
} 

UIGraphicsBeginImageContext(size); 

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextScaleCTM(context, scale, scale); 

[self.view.layer renderInContext:context]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Taking Doppel res auf älteren Geräten funktioniert, und wird wieder nach unten auf dem Bildschirm, wenn angezeigt skaliert werden. Aber ist nicht zu empfehlen, und einfach eine Verschwendung.