immagino hai bisogno di una cattura di un UIView/UIWindow nella risoluzione retina (960x640 o 2048x1536) Utilizzando UIGraphicsBeginImageContextWithOptions e impostare il parametro di scala 0.0f rende catturare a risoluzione nativa (retina per iPhone 4 e versioni successive o iPad 3).
Questo codice catturare la vostra UIView in risoluzione nativa
CGRect rect = [captureView bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[captureView.layer renderInContext:context];
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Questo fa lo stesso per tutto schermo (finestra chiave)
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
CGRect rect = [keyWindow bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[keyWindow.layer renderInContext:context];
UIImage *capturedScreen = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Ciò consente di risparmiare l'UIImage in formato jpg con la qualità del 95% in cartella documenti del app
NSString *imagePath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/capturedImage.jpg"]];
[UIImageJPEGRepresentation(capturedImage, 0.95) writeToFile:imagePath atomically:YES];
puoi provare con questo anche UIGraphicsBeginImageContextWithOptions (view.bounds.size, view.opaque, 0.0); –
grazie ma non cambia nulla! –
Quando dici "bassa qualità" cosa intendi esattamente? L'immagine non ha lo stesso aspetto di quello che appare sullo schermo? Stai usando un display retina ma l'immagine catturata non è così nitida? L'immagine è sgranata o distorta? Cosa c'è di sbagliato in questo? – TigerCoding