0

本の読んだ内容を実際に視覚的に表現した一種の進行状況バーがあります。このバーは、本が読まれた領域を埋める水平線です。例として、100 ページの本で、ユーザーが 1 ~ 10 ページと 90 ~ 100 ページしか読んでいない場合、プログレス バーの左端に 10% の領域、右端に 10% の領域が色で塗りつぶされて表示されます。 .

私は現在、このコードを使用して、1回の読書セッションで四角形を描画しています:

CGContextRef context = UIGraphicsGetCurrentContext();
CGRect innerRect = CGRectInset(rect, 5, 5);
CGRect ProgressIndicator = CGRectMake(innerRect.origin.x, innerRect.origin.y, 20, innerRect.size.height);
CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]);
CGContextSetLineWidth(context, 5);
CGContextMoveToPoint(context, CGRectGetMinX(ProgressIndicator), CGRectGetMinY(ProgressIndicator));
CGContextAddLineToPoint(context, CGRectGetMaxX(ProgressIndicator), CGRectGetMinY(ProgressIndicator));
CGContextAddLineToPoint(context, CGRectGetMaxX(ProgressIndicator), CGRectGetMaxY(ProgressIndicator));
CGContextAddLineToPoint(context, CGRectGetMinX(ProgressIndicator), CGRectGetMaxY(ProgressIndicator));
CGContextClosePath(context);
CGContextStrokePath(context);
CGContextSetFillColorWithColor(context, [[UIColor blueColor]CGColor]);
CGContextFillRect(context, ProgressIndicator);

現在、これは 1 回の読み取りセッション用であり、バーの長方形の「読み取り」部分として 1 つの四角形のみを描画します。バーに描画する複数の四角形 (配列など) がある場合、描画を管理するにはどうすればよいですか。別の四角形を描画すると、現在の描画が失われるのではないかと心配しています。

「for」ループを使用してこれらの複数の四角形を描画するにはどうすればよいですか?

これは非常にばかげた質問かもしれませんが、それを回避する方法を見つけようとしましたが、成功しませんでした。

4

1 に答える 1

0

これを別の方法で考えてみることをお勧めします。任意の数の「読書セッション」を追跡することは、非常に非効率的な表現になる可能性があります。

このような状況では、「読み取りセッション」からのデータを毎回連結するのではなく、スパース表現を使用すると描画が簡単になることをお勧めします。どのページが読み取られたか、ピリオド、配列、辞書、またはカスタムオブジェクトで追跡するだけです.

次に、描画コードは単にストレージをループし、セクションを「読み取り」の場合はある色で描画して描画しないか、「未読」の場合は別の色などを描画することができます。

于 2012-11-22T18:05:09.507 に答える