0

基本的に、0〜100の値に一致する破線の円を作成したい. 異なる 10 ポイントの増分を表す 10 の異なる画像を取得したくありません。どうすればいいですか?

ここに画像の説明を入力

このようなもの

4

3 に答える 3

4

私は iOS や Objective-C に慣れていませんが、概念は普遍的です。

円上の任意の点の位置は として記述できますsin(angle)*radius,cos(angle)*radius。したがって、次の概念 (疑似コード) に従って、このような円を自分で描くことができます。

drawCircle(radius, borderWidth, dashDensity)
{
    int numberOfDashes = radius / dashDensity);
    float radsPerDash = pi * 2 / numberOfDashes;
    float innerRadius = radius - (borderWidth / 2);
    float outerRadius = radius + (borderWidth / 2);

    for(float angle = 0; angle < pi * 2; angle += radsPerDash)
        DrawLine(sin(angle)*innerRadius, cos(angle)*innerRadius,
                 sin(angle)*outerRadius, cos(angle)*outerRadius);
}

ここから好きなように見えるはずです。dashDensityもちろん、魔法の定数を使用してから自動的に計算radiusし、太いダッシュに適していると思われる線幅を使用することもできます。

半円 (たとえば、85% が塗りつぶされている) の場合、ループの終了条件を変更します。

for(float angle = 0; angle < (pi * 2 * 0.85); angle += radsPerDash)
于 2013-06-14T02:29:13.677 に答える
1

UIView のカスタム サブクラスを作成します。

drawRect をオーバーライドします。

その中で、次の関数を使用します。

  • UIGraphicsGetCurrentContext
  • CGContextBeginPath
  • 一部の線画機能
  • CGContextClosePath
  • CGContextDrawPath

これらの関数のドキュメントを参照すると、必要な関数への相互参照がすぐに見つかります。

于 2013-06-14T03:32:53.363 に答える
1

ここでrtmと言って申し訳ありませんが、実行してください。と で円を作成しCGPathCreateMutableCGPathAddArcを使用しますCGPathCreateCopyByDashingPath。終わり。

于 2013-06-14T05:06:48.693 に答える