ボタンの位置をアニメーション化して円の周りを回転させています。これにより、より多くのファンシーを除いて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の周りに回転させます。これはアナログゲージなどの中で矢印を回転させるのに非常に便利な方法です。