2

グラフを表示するものがUIViewあります..今、それをキャプチャする必要があり、グーグルで検索しUIImageて以下のコードを取得しました.しかし、コードでこれを使用すると、ブレークポイントコンパイラを使用してもこれに到達しません私はUIView間違っているところにこれを使用していますか?

+ (UIImage *) imageWithView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return img;
} 
4

3 に答える 3

3

以下の方法で、iPhoneアプリの任意のビューまたは全画面のスクリーンショットを撮ることができます

- (UIImage *)captureView {

//hide controls if needed
CGRect rect = [self.view bounds];

    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [self.view.layer renderInContext:context];   
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;

}

そして、以下のように呼び出します...

UIImage *tempImageSave=[self captureView];

また、この画像をフォトアルバム用に次の行で保存することもできます..

UIImageWriteToSavedPhotosAlbum(tempImageSave,nil,nil,nil);

また、ドキュメント ディレクトリの次の行を使用して、この画像を保存することもできます。

NSData *imageData = UIImagePNGRepresentation(tempImageSave);
NSFileManager *fileMan = [NSFileManager defaultManager];

NSString *fileName = [NSString stringWithFormat:@"%d.png",1];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
[fileMan createFileAtPath:pdfFileName contents:imageData attributes:nil];

ビューにレイヤー画像またはグラフィック関連のデータが含まれている場合は、以下のメソッドを使用します。

-(UIImage *)convertViewToImage:(UIView *)viewTemp
{
    UIGraphicsBeginImageContext(viewTemp.bounds.size);
    [viewTemp drawViewHierarchyInRect:viewTemp.bounds afterScreenUpdates:YES];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;

}

そして、以下のようにこの方法を使用します。

UIImage *tempImageSave = [self convertViewToImage:yourView];

これがお役に立てば幸いです。

于 2012-12-27T05:34:28.270 に答える
1

この方法でビューの画像を保存し、画像をドキュメント ディレクトリに保存できます。

-(void)SaveViewAsImage
{
    UIGraphicsBeginImageContext(self.view.bounds.size);

        UIImage *saveImage = UIGraphicsGetImageFromCurrentImageContext();
        [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIGraphicsEndImageContext();
        NSData *imageData = UIImagePNGRepresentation(saveImage);
        NSFileManager *fileMan = [NSFileManager defaultManager];

        NSString *fileName = [NSString stringWithFormat:@"%d.png",1];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
        [fileMan createFileAtPath:pdfFileName contents:imageData attributes:nil];

}

画像をドキュメント ディレクトリに保存します :)

このデモをダウンロード

http://www.sendspace.com/file/gjxa82

于 2012-12-27T05:37:42.073 に答える
1

このコードを試してみてください

- (UIImage *)captureView:(UIView *)view {
    CGRect screenRect = [[UIScreen mainScreen] bounds];

    UIGraphicsBeginImageContext(screenRect.size);

    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [[UIColor clearColor] set];
    CGContextFillRect(ctx, screenRect);

    [view.layer renderInContext:ctx];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return newImage;
}
于 2012-12-27T05:56:05.963 に答える