0

簡単なグラフを描く必要がありますが、iPhoneグラフィックのカスタム描画の経験がないので、誰かが助けてくれることを願っています。

タスクは簡単です。リソースの.pngファイルからグラフの背景を描画し、背景のいくつかの位置にバンドルされた.pngファイルからポイントを描画する必要があります。

描画には、UIViewから子孫を作成し、次のコード行を使用します。

CGContextRef context = UIGraphicsGetCurrentContext();
CGRect rect = CGRectMake(0, 0, 250, 500);
CGContextDrawImage(context, rect, [[UIImage imageNamed:@"graph.png"] CGImage]);

しかし、それは機能していません。

最初の問題、私は解決できません-UIGraphicsGetCurrentContextはnilを返します。

手伝って頂けますか?

4

2 に答える 2

1

おそらく、xib/ストーリーボードにビューを追加するのを忘れたでしょう。

ストーリーボードでユーティリティメニューを開き、描画しようとしている画面にビューを追加します。次に、ビューのクラスを、ビューを拡張するクラスに変更します。

このチュートリアルの「5つ星評価ビューの使用」セクションに従って、ビューをストーリーボードに追加できます。

詳細については、次のことができます。

  • stackoverflowでこの回答に従ってください
  • チュートリアルで、またはこのブログをフォローして、コスタムビューに必要なすべての手順を実行したかどうかを確認してください(このブログにはストーリーボードの部分はありません)
于 2012-09-22T19:20:18.790 に答える
0

このコードで問題を解決しました。

- (void) drawGrid{
    UIImage *sourceImage = [UIImage imageNamed:@"sungraph.png"];

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(sourceImage.size.width, sourceImage.size.height), NO, 0);

    CGRect rectangle = CGRectMake(0, 0, sourceImage.size.width, sourceImage.size.height);
    self.frame = rectangle;

    [sourceImage drawInRect:rectangle];
}

- (void) finalizeImage{
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    imgView = [[UIImageView alloc] initWithImage:newImage];
    imgView.frame = CGRectMake(0, 0, newImage.size.width, newImage.size.height);
    [self addSubview:imgView];    
}

クラスのinitWithFrameから、最初の関数を呼び出します。その後、グラフにデータを追加し(線を引くなど) 、最後にfinalizeImageを呼び出します。

于 2012-09-28T22:53:03.887 に答える