1

UIボタンが1つあります。ポイント A からポイント B に移動させたいのですが、移動中、そのボタンは 360 度 1 回転する必要があります。

何らかのイベントの後、今度は逆方向に回転して、その UIButton を元の位置に戻したいと思います。

このコードを書きましたが、うまくいきませんでした。ボタンが予期しない方法で回転するのを見ています。ここで何が欠けていますか?

移動するには:

    [UIView animateWithDuration:0.3 animations:^{

        CGAffineTransform rotate360AntiClockWise = CGAffineTransformMakeRotation(M_PI_2);

        CGRect initialFrame = button.frame;
        [button setTransform:rotate360AntiClockWise];
        [button setFrame:CGRectMake(initialFrame.origin.x - 140.0, initialFrame.origin.y, initialFrame.size.width, initialFrame.size.height)];

    }];

再び同じポジションへ

   [UIView animateWithDuration:0.4 animations:^{
        CGAffineTransform rotate360ClockWise = CGAffineTransformMakeRotation(-M_PI_2);

        [button setFrame:originalFrame]; //for movement 
        [button setTransform:rotate360ClockWise];

    }];

}
4

3 に答える 3

0

3ステップでお願いします

CGAffineTransform matOne = CGAffineTransformMakeTranslation(x_offset, y_offset);
CGAffineTransform matTwo = CGAffineTransformMakeRotation(M_PI_2);
CGAffineTransform matResult = CGAffineTransformConcat(matOne, matTwo);
// Finally
[button setTransform:matResult];

これがお役に立てば幸いです。Concat が最初のパラメーターとして matOne を持っていることを確認してください。

また、これは別の質問の重複の可能性があります: CGAffineを使用した回転ビュー後の翻訳

于 2013-01-09T10:57:21.863 に答える
0

現時点では試すことはできませんが、フレームを正しく使用すると、変換を適用するときに問題が発生することを覚えていれば. ボタンの中心を設定してみましたか?

[button setCenter:newCenter]

newCenterは対応するですCGPoint

于 2013-01-09T10:46:54.273 に答える