iOS开发代码截取当前屏幕(是否有状态栏)

@interface UIView (ScreenShot)
/**
 截取当前屏幕

 @return 返回当前屏幕的图片
 */
- (UIImage *)imageScreenShot;
@end

@implementation UIView (ScreenShot)
//截取当前屏幕
- (UIImage *)imageScreenShot {
    
    UIGraphicsBeginImageContext(self.frame.size);
    
//    CGContextRef context = UIGraphicsGetCurrentContext();

//    [self.layer renderInContext:context]; //用这个方法截屏是没有状态栏的
    
    [self drawViewHierarchyInRect:CGRectMake(0, 0, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame)) afterScreenUpdates:YES];//这个方法截屏是有状态栏的.
    
    UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return screenImage;
    
    ///另外,如果调用该方法的view为普通控制器的view,是不会有导航栏的.
    ///想要有导航栏,调用该方法的view应该为导航控制器的view.或者是当前主窗口:keyWindow.
}
@end

你可能感兴趣的:(iOS开发代码截取当前屏幕(是否有状态栏))