iPhone и iPad, сделайте скриншот с воспроизведением видео - PullRequest
2 голосов
/ 02 октября 2011

Моему приложению нужно сделать снимок экрана, когда на экране воспроизводится видео. Видео воспроизводится AVPlayer и AVPlayerLayer. Проблема при попытке использовать старые методы, такие как:

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
CGRect rect = [keyWindow bounds];

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
    UIGraphicsBeginImageContextWithOptions(rect.size, NO, [UIScreen mainScreen].scale);
else
    UIGraphicsBeginImageContext(rect.size);

CGContextRef context = UIGraphicsGetCurrentContext();
[keyWindow.layer renderInContext:context];   
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;

Возвращает изображение экрана и черную область (там должно быть видео). Я могу успешно сделать снимок экрана с помощью UIGetScreenImage (), но это частный API, поэтому я не уверен, смогу ли я его использовать или нет

Ответы [ 2 ]

1 голос
/ 02 октября 2011

Из того, что я прочитал, многие опубликованные приложения используют UIGetScreenImage(). Похоже, Apple довольно снисходительно относится к его использованию. Возможно, вы могли бы рискнуть ...

0 голосов
/ 25 декабря 2013

Хотя прошло много времени - я хотел бы отметить, что теперь это возможно на iOS 7 с помощью команды снимка на UIView:

https://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/occ/instm/UIView/snapshotViewAfterScreenUpdates:

...