iOS从viewcontroller加载多个视图并将其另存为图像

时间:2016-01-22 09:59:32

标签: ios objective-c image

我有一个视图控制器,它有4个选项卡(一些选项卡包含其中包含多个视图的scrollview)。我需要将选项卡的所有内容保存为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;
}

1 个答案:

答案 0 :(得分:0)

Nvm,我想通了,我只需要创建选项卡的副本,然后让它们不动画,只显示数据。然后预加载它们并使用它们的图像。