[iOS]如何制作当前视图状态的“快照”

时间:2010-09-14 15:00:09

标签: iphone view

我需要制作快照或截图 - 根据需要调用当前视图,然后在模态视图中显示它。

因为如果我只是在ModalView的View控制器中写这个

MyAppViewController *viewController = [[MyAppViewController alloc] init];
self.view = viewController.view;

MyAppViewController的所有方法也被调用,但我不需要它,我只需要“保存”ModalView出现时屏幕上的所有内容,并在ModalView的视图中显示它。

我该怎么办? 提前谢谢!

3 个答案:

答案 0 :(得分:34)

我建议这样做:

有一个方法可以从视图内容中创建一个图像。

-(UIImage*) makeImage {

UIGraphicsBeginImageContext(self.view.bounds.size);

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return viewImage;
}

为你的模态视图创建一个自定义的init方法,并为你的modalView提供一个可以保存UIImage的实例变量......

- (id)initWithImage:(UIImage *)temp {
   myImage = temp;
}

然后在你的modalView中,也许在viewDidLoad方法中,创建一个UIImageView并将图像设置为myImage

希望这可以实现您的目标。

答案 1 :(得分:12)

在iOS 7中,您可以使用UIView中的一种新方法来创建快照,例如:

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates;

返回一个UIView,然后您可以将其添加为子视图。

答案 2 :(得分:0)

UIView *viewSnapShop = [self snapshotViewAfterScreenUpdates:NO];