【发布时间】:2016-04-28 21:11:30
【问题描述】:
我有一个视图控制器,它有 4 个选项卡(一些选项卡包括滚动视图,其中包含多个视图)。我需要将选项卡的所有内容保存到 4 张图片中。我设法让每个标签返回一个UIImage 供我保存。但是我发现了一个问题,如果我没有点击标签栏(也就是说没有手动加载它们并在屏幕上显示它们),标签无法返回图像,因为它们没有视图参考。所以我的问题是,我是否预加载选项卡视图?如果是这样,怎么做?
如果不预加载,是否有更好的解决方法?
我的部分代码:
View Controller 用这个来分享:
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:@[shareText,[_summaryViewController getImageToShare],[_sessionLogViewController getImageToShare] ,[_breakdownViewController getImageToShare],[_skillsViewController getImageToShare]] applicationActivities:nil];
getImageToShare:
-(UIImage*) getImageToShare
{
UIImage *image = nil;
UIGraphicsBeginImageContextWithOptions(self.scrollView.contentSize, NO, 0.0);
{
CGPoint savedContentOffSet = self.scrollView.contentOffset;
CGRect savedFrame = self.scrollView.frame;
self.scrollView.contentOffset = CGPointZero;
self.scrollView.frame = CGRectMake(0, 0, self.scrollView.contentSize.width, self.scrollView.contentSize.height);
[self.scrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
image = [ViewToImage ImageWithView:self.scrollView];
self.scrollView.contentOffset = savedContentOffSet;
self.scrollView.frame = savedFrame;
}
UIGraphicsEndImageContext();
if (image != nil) {
NSLog(@"there is something returned:%@",image);
}else
NSLog(@"nothign is returned");
return image;
}
【问题讨论】:
-
你的意思是你想在所有选项卡中显示 4 个不同的图像,我可能是正确的。
-
嗨,是的,我想展示 4 张不同的图像,而不是保存它们。它就像一个汇总页面,我设法让函数在我想保存的图像中返回正确的内容。唯一的问题是,如果我没有按下选项卡来显示(加载)页面,它将返回 nil。我应该改变我的 ViewToImage 吗?我应该在此处上传以获取更多信息吗?
-
好的nvm,经过进一步挖掘,我意识到你可以调用[_viewcontroller view]来预加载视图。现在出现一个问题。我在 4 个选项卡上有一些动画,如果我执行预加载方法,则图片返回是在动画完成之前。我看不到我想要的数据。
标签: ios objective-c image