Nella mia app sto usando un metodo di screenshot. Sul mio iPad 2 è molto veloce (circa 130 ms) per eseguire questo metodo. Ma sul nuovo iPad (sicuramente a causa della massima risoluzione e della stessa CPU) impiega circa 700 ms! C'è un modo per ottimizzare il mio metodo? Forse c'è un modo per lavorare direttamente con la scheda grafica?iPad 3 slow screenshot
Ecco il mio metodo screenshot:
- (UIImage *)image {
CGSize imageSize = self.bounds.size;
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) UIGraphicsBeginImageContextWithOptions(imageSize, NO, [UIScreen mainScreen].scale);
else UIGraphicsBeginImageContext(imageSize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextTranslateCTM(context, [self center].x, [self center].y);
CGContextConcatCTM(context, [self transform]);
CGContextTranslateCTM(context, -[self bounds].size.width * [[self layer] anchorPoint].x, -[self bounds].size.height * [[self layer] anchorPoint].y);
[[self layer] renderInContext:context];
CGContextRestoreGState(context);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
Grazie per il vostro aiuto.
Non posso aiutarti qui. Ma penso che 700ms sia veramente lento. Non dovrebbe essere come 130ms * 4 = 520ms? –
Provare a usare 'UIGraphicsBeginImageContextWithOptions (imageSize, NO, 0.0f);' invece di 'UIGraphicsBeginImageContextWithOptions (imageSize, NO, [UIScreen mainScreen] .scale);'. Questo renderà lo screenshot 1: 1. O c'è una ragione specifica per cui hai bisogno di '[UIScreen mainScreen] .scale'? –
@Jenox si, dipende ma è più come 700ms. – Pierre