0

初めてiPhoneを回すとボタンが回ります。2回目にiPhoneを回すと失敗します。

- (void)configureViewsLandscapeMode
{
    UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;

    if (deviceOrientation == UIDeviceOrientationLandscapeLeft) {

        [self.button setTransform:CGAffineTransformMakeRotation(M_PI_2)];

    } else if (deviceOrientation == UIDeviceOrientationLandscapeRight) {


        [self.button setTransform:CGAffineTransformMakeRotation(-M_PI_2)];

    }
}

私は他の同様の答えを読みました:

CGAffineTransformMakeScale を使用して UIView を 0 にスケール

CGAffineTransformInvert: 特異行列

私は IOS から始めていますが、問題がわかりません。解決策よりも問題を理解したいのですが、いくつかのガイダンスをいただければ幸いです

4

2 に答える 2

1

回転アニメーションを作成するときは、ビューを変更していないことを確認してくださいframeframeこれは、たとえば自動サイズ変更が使用されている場合や、明示的に変更しようとしている場合に発生する可能性があります。

特にアニメーション内でフレームとトランスフォームを同時に変更すると、iOS は元の位置からターゲット位置へのアニメーションを生成しようとします。これにはいくつかの行列計算が含まれ、複数の変更 ( などframe) が含まれる場合はエラーで終了する可能性があります。

于 2013-05-29T11:07:37.860 に答える
1

これを試して :

- (void)configureViewsLandscapeMode
{
    UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;

    if (deviceOrientation == UIDeviceOrientationLandscapeLeft) {

        [self.button setTransform:CGAffineTransformRotate(CGAffineTransformIdentity, M_PI_2)];

    } else if (deviceOrientation == UIDeviceOrientationLandscapeRight) {


        [self.button setTransform:CGAffineTransformRotate(CGAffineTransformIdentity, -M_PI_2)];

    }
}
于 2013-05-29T10:33:14.943 に答える