3

ボタンの位置をアニメーション化して円の周りを回転させています。これにより、より多くのファンシーを除いてUISwitchのような動作が作成されます。ボタンは回転しますが、希望の位置から約0.25ラジアン離れてしまいます。私は、アンカーポイントをどこに置いてボタンが原点を中心とした完全な円で回転するかを調べようとしています。回転変換の正しいアンカーポイントを見つけることが難しい

ここでは、元の位置から半径120ピクセルの「軌道」ボタンを作成するために使用するコードを示します。

float offsetX=120; 
float offsetY=0; 

enableDisableButton.layer.anchorPoint = 
    CGPointMake(offsetX/enableDisableButton.frame.size.width,     
       offsetY/enableDisableButton.frame.size.height); 

私は以下の方法を使用して計算します。 degreesのために90の引数を渡すと、私は180˚の位置でボタンの開始を参照し、オフセット

-(CGAffineTransform)calculateLabelPositionFromFixedPointWithOffsetClockwiseInDegrees:(float)degrees 
{ 

    float rotation = degrees*(2*M_PI/360); 
    CGAffineTransform transform24 = CGAffineTransformMakeRotation(rotation); 
    NSLog(@"rotation: %f", rotation); 
    return transform24; 
} 

この小さな0.25ラジアンかそこらの意味120個のピクセル離れてその起源から、まだ、90˚に移動することを期待そのI各ボタンの位置を視覚的に確認する必要があり、その位置をプログラム的に容易に調整することはできない。ボタンを回転させる正しい方法を決定する上での助けに感謝します。

私は他の方法でオブジェクトを回転しようとしました。たとえば、矢印があります <--------xと、この矢印を円の中でxの周りに回転したいと思います。この操作の正しいアンカーポイントの配置は何ですか?それは[1、0.5]ですか?

この種の回転を行う簡単な方法は、オブジェクトを対称のUIViewに配置し、オブジェクトを回転の中心に置き、回転変換を割り当てます。

<アンカーポイントを調整せずにYを中心点Xの周りに回転させます。これはアナログゲージなどの中で矢印を回転させるのに非常に便利な方法です。

答えて

0

"この種の回転を行う簡単な方法は、オブジェクトを対称UIView内に配置し、目的の回転点に中心を置き、回転変換を割り当てることです。この方法は問題ありません。例では、あなたのenableDisableButton

0

アンカーポイントは縦にあなたのボタンの中央にない

CGPointMake(offsetX/enableDisableButton.frame.size.width, 0) 

すなわちだろう。アンカーポイントを中心に回転すると、ボタンが希望の位置の上端または下端にオフセットされます。変換は大丈夫だと思うので、単なるアンカーポイントだと思います。それは次のようになります:

CGPointMake(offsetX/enableDisableButton.frame.size.width, 0.5f) 
関連する問題