1

私は、ユーザーが1か月をクリックして、その特定の月に獲得したメダルをポップアップで確認できるようなタイムラインを持つプロジェクトに取り組んでいます。さて、メダル画像(小さな視覚的な円)をプログラムでアレンジしたいと思います。は、このように、またはこのように配置する必要があります(特定の形式に特にこだわるわけではありませんが、対称に​​したいだけです)。

  1. メダル1個-1つの小さな円
  2. 2つのメダル-2つの円を並べて
  3. 3つのメダル-2つのメダルが並んでいて、2つのメダルの真ん中に1つある3つの円
  4. 4つのメダル-正方形のように形成される4つの円
  5. 5個のメダル-正方形に4個の円、上部中央に5個目の円。

私は自分の要件について明確になっていない可能性があることを知っているので、さらに明確にする必要がある場合は言及してください。

メダルのこのパターンまたは他のパターンを描画するためのロジックが必要です。私は記録のためにobjective-cで働いています

4

1 に答える 1

1

次のようなことができます:

int nrmedals; //number of medals
CGPoint bottompos; //position of the lower left corner of the rectangle where you want to draw
float padding; //space between medals
float diameter; //diameter of the medals
if (nrmedals%2==0) { //even
    for (int i=0; i<nrmedals; i+=2) {
        draw medal one at position (bottompos.x,bottompos.y+ i/2 * (diameter + padding));
        draw medal two at position (bottompos.x+diameter+padding ,bottompos.y + i/2 * (diameter + padding));

    }

}else {//odd
    for (int i=0; i<nrmedals-1; i+=2) {
        draw medal one at position (bottompos.x,bottompos.y+ i/2 * (diameter + padding));
        draw medal two at position (bottompos.x+diameter+padding ,bottompos.y + i/2 * (diameter + padding));

    }
draw odd medal at position (bottompos.x +diameter/2+padding/2 ,bottompos.y+diameter * (nrmedals-1)/2 +padding);
}

これが基本的な考え方です (もちろん、「2」を変数に置き換えることができ、行ごとに 2 つのメダルの代わりに、より多くのメダルを獲得できます)

ポイントを計算する数学の一部がオフになっている可能性があります

于 2012-12-07T18:17:17.780 に答える