Я использую следующий метод для захвата изображения верхнего уровня моего приложения. На удивление медленнее, поэтому я ищу более быструю альтернативу. Какие-либо предложения? Операторы журнала - это просто фиксировать тайминги.Что такое более эффективный способ захвата экрана в iPad?
+ (UIImage *) imageWithView:(UIView *)view{
DLog(@"imageWityhView started");
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
DLog(@"1");
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
DLog(@"2");
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
DLog(@"3");
UIGraphicsEndImageContext();
DLog(@"Returning an image");
return img;
}
Результаты:
2013-11-17 11:30:47.196 ... imageWityhView started
2013-11-17 11:30:47.220 ... 1
2013-11-17 11:30:52.543 ... 2
2013-11-17 11:30:52.544 ... 3
2013-11-17 11:30:52.547 ... Returning an image
Unsurprisingly, медленный процесс renderInContext:
. Отправка в фоновый поток, потому что он медленный, не является вариантом. Процесс инициируется действием пользователя, и результат необходим как можно скорее, чтобы дать обратную связь пользователю. Кажется, что пять секунд - это абсурдное количество времени для чего-то подобного.
В моем приложении захваченное представление может иметь потенциально более 1300 подпунктов. Однако для моего тестирования было всего около 20 или около того. Так что может заставлять его так долго? Вызывается ли какой-либо метод во всех моих подзаголовках? Есть ли эффективная альтернатива захвату всего экрана, который я могу использовать вместо этого?
Вы в порядке с поддержкой только iOS 7? –
Я поддерживаю iOS 7 и 6. У меня нет проблем с внедрением отдельного кода для каждого. –