iOSでこれを行う方法はたくさんあります。iOS には、Android と同様のビューがあり、座標 (ビューのフレーム) を指定してそれらをスーパービューに配置できます。
仮定:
1)軌跡、つまり方程式 x^2 + y^2 = c の円があると仮定します (ヒント: すべてのビューはこの軌跡上にあります。つまり、すべてのビューの中心はこの円と一致します)。
2) 必要な曲線に応じて C の値を選択する必要があり、ビューを配置するための開始点として (0,HEIGHT_OF_SCREEN) である初期点を選択する必要があります。
アルゴリズム :
int angularDisplacementBetweenEachView = 10; // 2 つのビュー間の距離 (ラジアン)
// 画面の X ボタンの座標
int startPositionOfViewX = 0;
int startPositionOfViewY = HEIGHT_OF_SCREEN;
// 曲線を決める定数
int C = 125;
-(void) main (){ // これは通常、View Controller で行われます
for(int i = 1; i< menu_items.count; i++){
Rect position = getCoordinatesForView(menu_item.get(i),menu_item.get(i-1).rect.x,menu_item.get(i-1).rect.y);
addView(menu_item.get(i),position.x,position.y);
}
}
// メソッドは、ビューが必要な座標 (x,y) を返します
//置いた。
-(Rect)getCoordinatesForView(View currentView, int prevViewX, int prevViewY){
// 極座標に変換
// 図を参照
// これは仮想円の半径でもあります
float r = sqrt(pow(x,2),pow(y,2));
float theta = atan(y,x);
//r & theta は前のメニュー項目の極座標です
float theta2 = (angularDisplacementBetweenEachView + r*theta)/r;
// デカルト座標に戻す
int x2 = r * cos (シータ);
int y2 = r * sin (シータ);
新しい rect(x2,y2) を返します。
}