#ios #ios7 #screenshot
#iOS #ios7 #скриншот
Вопрос:
(UIImage *)screenshot_1
{
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
(UIImage *)screenshot_2
{
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
затем оба в ios 7.0:
CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
UIImage *image = [self screenshot_1];
CFAbsoluteTime end = CFAbsoluteTimeGetCurrent();
NSLog(@"cost : %f ms", (end - start) * 1000);
а затем печать: стоимость: 10.128021 мс
CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
UIImage *image = [self screenshot_2];
CFAbsoluteTime end = CFAbsoluteTimeGetCurrent();
NSLog(@"cost : %f ms", (end - start) * 1000);
а затем печать: стоимость: 68.924010 мс
мой вопрос в том, что быстрее?
Ответ №1:
Ну, поскольку 10 мс <68 мс, первый, очевидно, быстрее, однако будьте осторожны, первый метод не будет применять некоторые преобразования, которые может иметь ваше представление, в то время как второй будет. Если вы планируете часто использовать эти функции, вам следует найти способ повторного использования общего контекста резервного копирования.