In meiner App verwende ich eine Screenshot-Methode. Auf meinem iPad 2 ist es sehr schnell (ca. 130 ms) diese Methode auszuführen. Aber auf dem neuen iPad (sicherlich aufgrund der höchsten Auflösung und der gleichen CPU) dauert es etwa 700 ms! Gibt es eine Möglichkeit, meine Methode zu optimieren? Vielleicht gibt es eine Möglichkeit, direkt mit der Grafikkarte zu arbeiten?iPad 3 langsam screenshot
Hier ist meine Screenshot Methode:
- (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;
}
Vielen Dank für Ihre Hilfe.
Kann Ihnen hier nicht helfen. Aber ich denke, dass 700ms wirklich langsam sind. Sollte es nicht wie 130ms * 4 = 520ms sein? –
Verwenden Sie 'UIGraphicsBeginImageContextWithOptions (imageSize, NO, 0.0f);' anstelle von 'UIGraphicsBeginImageContextWithOptions (imageSize, NO, [UIScreen mainScreen] .scale);'. Dies wird für 1: 1-Screenshot sorgen. Oder gibt es einen bestimmten Grund, warum Sie '[UIScreen mainScreen] .scale' dort benötigen? –
@Jenox Ja, es hängt davon ab, aber es ist mehr wie 700ms. – Pierre