2010-11-20 3 views
1

1.I utilisation ci-dessous code pour prendre screenshot.is nécessaire de changer pour une grande résolutionproblème à propos de @ 2X

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

2.Quel ne se produit si je viens d'utiliser une image avec 640 * 960 résolution à la fois bas et de haute qualité? (signifie que n'utilisez pas d'image avec @ 2x)

Répondre

3

Cela prendra seulement des captures d'écran normales (320x480). Donc, en réponse à 1, oui. Les appareils de génération plus ancienne peuvent également faire une double résolution, l'écran ne peut tout simplement pas l'afficher.

Pour prendre une capture d'écran à la résolution de l'appareil que vous pouvez faire ceci:

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(); 

Prendre à double résolution sur les anciens appareils ne fonctionne, et sera revu à la baisse vers le bas si elle est affichée à l'écran. Mais n'est pas recommandé, et tout simplement un gaspillage.