iOS开发oc之使用上下文截图,并截取全屏为图片

125 阅读1分钟

- (void)screenShot

{

// 将要被截图的view,即窗口的根控制器的view(必须不含状态栏,默认ios7中控制器是包含了状态栏的)

UIViewController *beyondVC = self.view.window.rootViewController;

// 背景图片 总的大小

CGSize size = beyondVC.view.frame.size;

// 开启上下文,使用参数之后,截出来的是原图(YES 0.0 质量高)

UIGraphicsBeginImageContextWithOptions(size, YES, 0.0);

// 要裁剪的矩形范围

CGRect rect = CGRectMake(0, 0, ScreenWidth, ScreenHeight);

//注:iOS7以后renderInContext:由drawViewHierarchyInRect:afterScreenUpdates:替代

//判读导航栏是否有上层的Tabbar 决定截图的对象

if (self.tabBarController == beyondVC) {

[beyondVC.view drawViewHierarchyInRect:rect afterScreenUpdates:NO];

} else {

[self.view drawViewHierarchyInRect:rect afterScreenUpdates:NO];

}

// 从上下文中,取出UIImage

UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();

// 添加截取好的图片到图片数组

if (snapshot) {

[_screenshotImgs addObject:snapshot];

}

// 千万记得,结束上下文(移除栈顶的基于当前位图的图形上下文)

UIGraphicsEndImageContext();

}

以上是截图的方法,在需要的地方调用该方法即可。