2

iPhoneの開発は初めてです。iPhoneテクノロジーのビューとレイアウトについてはあまりよく知りません。

私が達成したいのは:

  • 私は 1 つのボタンを含むページにいます。そのボタンをクリックすると、チャート ビューが開きます (コア プロットを使用)。
  • そのチャート ビューのスクリーン ショットを撮りたいのですが、そのビューを開きたくありません。

これは可能ですか?

どんな助けでも大歓迎です。

4

4 に答える 4

5

はい、ビューのレイヤーをビットマップコンテキストに合成し、そこから画像オブジェクトを取得できます。

CGContextRef CGContextCreate(CGSize size)
{
    CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
    CGContextRef ctx = CGBitmapContextCreate(NULL, size.width, size.height, 8, size.width * (CGColorSpaceGetNumberOfComponents(space) + 1), space, kCGImageAlphaPremultipliedLast);
    CGColorSpaceRelease(space);
    return ctx;
}

- (UIImage *)screenshotView:(UIView *)view
{
    CGSize size = view.frame.size;

    // Check for retina display
    if ([[UIScreen mainScreen] scale] > 1.5f) {
        size.width *= 2;
        size.height *= 2;
    }

    CGContextRef ctx = CGContextCreate(size);
    CGAffineTransform normalize = CGAffineTransformMake(1, 0, 0, -1, 0, size.height);
    CGContextConcatCTM(ctx, normalize);

    [[view layer] renderInContext:ctx];

    CGImage cgImg = CGBitmapContextCreateImage(ctx);
    UIImage *img = [UIImage imageWithCGImage:cgImg];
    CGImageRelease(cgImg);
    CGContextRelease(ctx);

    return img;
}
于 2012-11-10T07:47:53.163 に答える
1

はい、できます。

UIView *yourView = /* get your chart view */;
UIGraphicsBeginImageContext(yourView.bounds.size);
[yourView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *yourViewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

これで、ビューの画像を含む UIImage ができました。

于 2012-11-10T07:39:40.733 に答える
0
UIGraphicsBeginImageContext(self.view.bounds.size); // You can put your view here.
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *data = [UIImagePNGRepresentation(image) retain];
UIImage *screenShot = [UIImage imageWithData:data];
于 2012-11-10T09:31:37.557 に答える
0

これは Core Plot に組み込まれています。

UIImage *screenShot = [graph imageOfLayer];

ホスティング ビューではなく、graphCore Plot グラフ ( ) はどこにありますか。画面のどこかにすでに表示されているホスティング ビューにない場合は、CPTXYGraph呼び出す前にグラフのサイズを設定してください。-imageOfLayer画面に表示するつもりがない場合は、ホスティング ビューはまったく必要ありません。

于 2012-11-10T18:22:22.380 に答える