Created
April 25, 2018 11:21
-
-
Save zhangkn/b86a4429363211913d04de7b71171123 to your computer and use it in GitHub Desktop.
如果自己的控制器需要展示主端唤起静态库时的页面当中背景,可以采用代码截图当背景即可
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 返回截取到的图片 | |
* | |
* @return UIImage * | |
*/ | |
- (UIImage *)imageWithScreenshot | |
{ | |
NSData *imageData = [self dataWithScreenshotInPNGFormat]; | |
return [UIImage imageWithData:imageData]; | |
} | |
/** | |
* 截取当前屏幕 | |
* | |
* @return NSData * | |
*/ | |
- (NSData *)dataWithScreenshotInPNGFormat | |
{ | |
CGSize imageSize = CGSizeZero; | |
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; | |
if (UIInterfaceOrientationIsPortrait(orientation)) | |
imageSize = [UIScreen mainScreen].bounds.size; | |
else | |
imageSize = CGSizeMake([UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width); | |
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0); | |
CGContextRef context = UIGraphicsGetCurrentContext(); | |
for (UIWindow *window in [[UIApplication sharedApplication] windows]) | |
{ | |
CGContextSaveGState(context); | |
CGContextTranslateCTM(context, window.center.x, window.center.y); | |
CGContextConcatCTM(context, window.transform); | |
CGContextTranslateCTM(context, -window.bounds.size.width * window.layer.anchorPoint.x, -window.bounds.size.height * window.layer.anchorPoint.y); | |
if (orientation == UIInterfaceOrientationLandscapeLeft) | |
{ | |
CGContextRotateCTM(context, M_PI_2); | |
CGContextTranslateCTM(context, 0, -imageSize.width); | |
} | |
else if (orientation == UIInterfaceOrientationLandscapeRight) | |
{ | |
CGContextRotateCTM(context, -M_PI_2); | |
CGContextTranslateCTM(context, -imageSize.height, 0); | |
} else if (orientation == UIInterfaceOrientationPortraitUpsideDown) { | |
CGContextRotateCTM(context, M_PI); | |
CGContextTranslateCTM(context, -imageSize.width, -imageSize.height); | |
} | |
if ([window respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) | |
{ | |
// | |
// if ([[UIDevice currentDevice].systemVersion isEqualToString:@"8.1.3"]) { | |
// | |
// | |
// }else{ | |
[window drawViewHierarchyInRect:window.bounds afterScreenUpdates:YES]; | |
// } | |
} | |
else | |
{ | |
[window.layer renderInContext:context]; | |
} | |
CGContextRestoreGState(context); | |
} | |
for (UIWindow *window in self.alertViewWindows) { | |
CGContextSaveGState(context); | |
CGContextTranslateCTM(context, window.center.x, window.center.y); | |
CGContextConcatCTM(context, window.transform); | |
CGContextTranslateCTM(context, -window.bounds.size.width * window.layer.anchorPoint.x, -window.bounds.size.height * window.layer.anchorPoint.y); | |
if (orientation == UIInterfaceOrientationLandscapeLeft) | |
{ | |
CGContextRotateCTM(context, M_PI_2); | |
CGContextTranslateCTM(context, 0, -imageSize.width); | |
} | |
else if (orientation == UIInterfaceOrientationLandscapeRight) | |
{ | |
CGContextRotateCTM(context, -M_PI_2); | |
CGContextTranslateCTM(context, -imageSize.height, 0); | |
} else if (orientation == UIInterfaceOrientationPortraitUpsideDown) { | |
CGContextRotateCTM(context, M_PI); | |
CGContextTranslateCTM(context, -imageSize.width, -imageSize.height); | |
} | |
if ([window respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) | |
{ | |
[window drawViewHierarchyInRect:window.bounds afterScreenUpdates:YES]; | |
} | |
else | |
{ | |
[window.layer renderInContext:context]; | |
} | |
CGContextRestoreGState(context); | |
} | |
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); | |
UIGraphicsEndImageContext(); | |
return UIImagePNGRepresentation(image); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment