2

テキストフィールドを含むビューがあります。このようにビューの向きを設定します

(void)deviceRotated:(id)sender
{
    UIDeviceOrientation orientation = [[UIDevice currentDevice]orientation];

    if (orientation == UIDeviceOrientationPortrait)
    {
        CGAffineTransform affine = CGAffineTransformMakeRotation (0.0);
        [self.View setTransform:affine];
    }

    if (orientation == UIDeviceOrientationPortraitUpsideDown)
    {
        CGAffineTransform affine = CGAffineTransformMakeRotation (M_PI * 180 / 180.0f);
        [self.View setTransform:affine];
    }
    else if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        CGAffineTransform affine = CGAffineTransformMakeRotation (M_PI * 90 / 180.0f);  
        [self.View setTransform:affine];
    }
    else if (orientation == UIDeviceOrientationLandscapeRight)
    {
        CGAffineTransform affine = CGAffineTransformMakeRotation ( M_PI * 270 / 180.0f);
        [self.View setTransform:affine]; 
    }
}

私の問題は、一部のテキストフィールドがキーボードによって隠されているため、キーボードが表示されたときにそのビューを上に移動させたいことです。CGAffineTransformMakeTranslation を使用する必要があると思いますが、その回転後に使用する方法がわかりません。

誰かがこの問題を解決するのを手伝ってくれますか??

4

2 に答える 2

8

CGAffineTransformConcat を使用できます。この問題を解決するために作成したコードは次のとおりです

CGAffineTransform rotate = CGAffineTransformMakeRotation (0.0);
CGAffineTransform translate = CGAffineTransformMakeTranslation(-5, -150);
self.alertView.transform = CGAffineTransformConcat(translate, rotate);

しかし、私はまだ理解していません.なぜ縦向き&&縦向き逆向きの翻訳は異なる点xとyを使用しなければならないのですか. 横向きの左向きと横向きの右向きでも起こります

于 2010-12-01T08:50:13.693 に答える
0

右回転のやり方はこちら

CGAffineTransform translate = CGAffineTransformMakeRotation(M_PI/18);
view.transform = CGAffineTransformConcat(view.transform, translate);

左に回転:

CGAffineTransform translate = CGAffineTransformMakeRotation(-M_PI/18);
view.transform = CGAffineTransformConcat(view.transform, translate);
于 2015-12-28T06:37:55.910 に答える