ios ArcGIS地图截屏 模仿设备 home键加电源键截屏 地图快照


只要调用这四个方法,可以完成这些功能。已经实践过。



- (UIImage *)imageWithScreenshot

{

    NSData *imageData = [self dataWithScreenshotInPNGFormat];

    return [UIImage imageWithData:imageData];

}



-(void)saveScreen

{

    UIImage *image = [self imageWithScreenshot];

    UIGraphicsEndImageContext();

    UIImageWriteToSavedPhotosAlbum(image,self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:),nil);

    

}

- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo

{


    if (!error) {

        NSLog(@"111");

    }else

    {

        NSLog(@"222");

    }

}


- (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:)])

        {

            [window drawViewHierarchyInRect:window.bounds afterScreenUpdates:YES];

        }

        else

        {

            [window.layer renderInContext:context];

        }

        CGContextRestoreGState(context);

    }

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return UIImagePNGRepresentation(image);

}

阅读更多

没有更多推荐了,返回首页