5

現在の iPhone アプリケーションで向きの変更を処理できるようにしたいと考えています。問題は、コントローラーのビューを回転またはサイズ変更したくないことです。デバイスの向きが変わったら、画面上で 1 つの UI 要素を 90 度回転させたいだけです。

Apple のカメラ アプリケーションはその好例です。デバイスの向きが変わると、すべてのボタンが回転しますが、ビュー自体は回転しません。

ビューのサイズを変更し、すべての要素を移動し、ボタンをアニメーション化するだけでよいと思いますが、もっと簡単な方法が必要だと思います。

前もって感謝します。

4

2 に答える 2

5

1) 2 つのビュー階層を作成し、この質問を参照して画面に表示されるものを変更できますwillRotateToInterfaceOrientation:

2) または、すべてのローテーションを自分で処理できます。 この質問を参照してください。

于 2012-06-04T14:11:10.743 に答える
2

使用できます

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
if(interfaceOrientation==UIInterfaceOrientationPortrait || interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown)
    {
        //Change frames as per orientations
    }

    else
    {    
          //Change frames as per orientations
    }


    return NO;
    }

方向に基づいて、変更する UI 要素のフレームを手動で設定します。このドキュメントConstantsのセクションからすべてのオリエンテーションにアクセスできます。

編集: この問題には NSNotification を使用できます。

UIApplicationDidChangeStatusBarOrientationNotification

アプリのユーザー インターフェースの向きが変わったときに投稿されます。

userInfo ディクショナリには、UIInterfaceOrientation 値をカプセル化する NSNumber オブジェクトが含まれています (UIInterfaceOrientation を参照)。UIApplicationStatusBarOrientationUserInfoKey を使用してこの値にアクセスします

Available in iOS 2.0 and later.

UIApplication.h で宣言

于 2012-06-04T13:40:52.800 に答える