从另一个ViewController捕获屏幕截图 - Obj C.

时间:2015-05-11 19:57:29

标签: ios objective-c

我目前正在使用:

        CGRect rect = [self.view bounds];
        UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
        CGContextRef context = UIGraphicsGetCurrentContext();
        [self.view.layer renderInContext:context];
        UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

选择UITabBarItem后,将检索当前视图的屏幕截图。问题是,在切换到下一个view之前,这将始终捕获用户处于活动状态current view的{​​{1}}。

为了更好地理解这一点。我有一个view来管理我的应用导航。 UITabBarController中的漫步是一张表格,我希望始终捕捉用户在导航中选择View controller Share的图片。所以我将此链接到一个方法,该方法检查是否已单击UITabBarItem并创建当前视图的图像,如上所示。

我的包版广告是Share

我在启动how can I capture an image of that first view(walk in view) every time no matter what view the user is currently on?

的自定义类中处理我的捕获功能

建议想法?

2 个答案:

答案 0 :(得分:3)

这会对你有帮助吗?

CGRect rect = [yourTabController.viewControllers[walkInViewIndex].view bounds];

UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();

[yourTabController.viewControllers[walkInViewIndex].view.layer renderInContext:context];
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

答案 1 :(得分:0)

[self.view.layer renderInContext:context];

这显式获取当前视图的快照(self.view)。您想要做的或多或少是相同的过程,但通过指定您的步入视图:

[self.walkingController.view.layer renderInContext:context];