在iOS中对UIView进行截图

4

我正在运行iOS 4.3,并尝试对正在播放电影的UIView进行截屏。

问题是,截屏(在模拟器中)只显示黑色背景,而不是我期望的电影图像。

以下是我的代码,请问可能是什么问题?谢谢!

- (void) takeScreenshot;
{

    UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 0.0);
    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    UIImageView *movieImage = [[UIImageView alloc] initWithImage:screenshot];
    [self addSubview:movieImage];

}

我不确定,但你的问题可能在 [self.layer renderInContext:UIGraphicsGetCurrentContext()]; 这行代码中,因为你正在截取 self.layer 的屏幕快照而不是你的视频播放器视图。 - 0xDE4E15B
1
我认为电影视图使用了OpenGL层来绘制其视频,因此这不会起作用。 - joerick
1个回答

2
我最终找到了解决这个问题的方法 - 正如joerick上面提到的,无法使用renderInContext截取屏幕截图,因为电影正在使用OpenGL层来绘制其视频。
但是有一种方法可以获取电影的缩略图(如下所示为当前播放时间):
UIImage *image = [moviePlayer thumbnailImageAtTime:moviePlayer.currentPlaybackTime timeOption:MPMovieTimeOptionNearestKeyFrame];  

希望这可以帮助某些人:)

有没有办法获取实际的屏幕截图?我对OpenGL的了解非常有限,但是Apple Doc中有一些代码可以用来截屏。我无法将这段代码编译成功。 - msk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接