2

アプリには、PDF ファイルに印刷したいいくつかのシノビチャートがあります。通常のビュー、ラベル、画像など、他のすべては正常に機能し、グリッド、凡例、グリッドラベルも表示されます。欠けているのはシリーズだけです。基本的に、PDFファイルに空のチャートが印刷されます。

次のようにPDFを印刷します。

NSMutableData * pdfData=[NSMutableData data];
PDFPage1ViewController *pdf1 = [self.storyboard instantiateViewControllerWithIdentifier:@"PDF1"];
pdf1.array1 = array1;
pdf1.array2 = array2;
pdf1.array3 = array3;
pdf1.array4 = array4;
UIGraphicsBeginPDFContextToData(pdfData, CGRectZero,nil);
CGContextRef pdfContext=UIGraphicsGetCurrentContext();
UIGraphicsBeginPDFPage();
[pdf1.view.layer renderInContext:pdfContext];
UIGraphicsEndPDFContext();

PDF1PageViewController からのまったく同じコードは、シリーズを見逃すことなく、通常の viewController で美しいグラフを描画します。配列には、表示する必要があるデータが含まれています。

[編集]

このコードは私のためにそれをしました:

UIGraphicsBeginImageContextWithOptions(pdf1.view.bounds.size, NO, 0.0);
[pdf1.view drawViewHierarchyInRect:pdf1.view.bounds afterScreenUpdates:YES];
UIImage *pdf1Image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *pdf1ImageView = [[UIImageView alloc] initWithImage:pdf1Image];
[pdf1ImageView.layer renderInContext:pdfContext];

アクティビティ ホイールは回転を停止しdrawViewHierarchyInRect、レンダリング中の現在のページを表示するラベルも更新を停止しますが。誰でもこれを修正する方法を知っていますか?

4

1 に答える 1

1

この問題が発生している理由は、チャートの系列部分が openGLES でレンダリングされているため、の一部としてレンダリングされないためですrenderInContext:

使用して調査できるオプションがいくつかあります。1 つ目は、iOS7 でのいくつかのスナップショット メソッドの追加ですUIView。アプリを iOS7 のみに制限できる場合は、コンテンツのスナップショットであるsnapshotViewAfterScreenUpdates:が返されます。UIView次の(テストされていない)コードが機能すると思います。

UIGraphicsBeginPDFPage();
UIView *pdfPage = [pd1.view snapshotViewAfterScreenUpdates:YES];
[pdfPage.layer renderInContext:pdfContext];
UIGraphicsEndPDFContext();

このアプローチの詳細については、http://www.shinobicontrols.com/blog/posts/2014/02/24/take-a-chart-snapshot-in-ios7 の ShinobiControls ブログを参照してください。

アプリを iOS7 に制限することができない場合でも、必要な結果を得ることができますが、少し複雑になります。幸いなことに、ShinobiControls ブログ ( http://www.shinobicontrols.com/blog/posts/2012/03/26/take-a-shinobichart-screenshot-from-your-app ) にブログ投稿があります。UIImageチャートからを作成する方法。これは、投稿で作成された画像コンテキストではなく、PDF コンテキストにレンダリングするように簡単に調整できます。投稿に付随する追加のコード スニペットがあり、github で入手できます: https://github.com/ShinobiControls/charts-snippets/tree/master/iOS/objective-c/screenshot

お役に立てれば

サム

于 2014-03-08T09:08:03.423 に答える