0

やあ、

iOS アプリに方向回転ロック/ロック解除トグル スイッチを実装しようとしています。

ロックはOKですが、ロック解除が問題です。

アプリの向きとデバイスの向きが異なる状況を想定します。ユーザーがその状況でロックを解除した場合、アプリの向きはデバイスの向きにすぐに従う必要があります。しかし、私は道を見つけることができません。

デバイスの向きの回転をシミュレートするにはどうすればよいですか?

編集

状況を明らかにします。

アプリにはトグル スイッチがあり、向きの回転を有効/無効にします。

ステップバイステップ:

1. スイッチが有効になっています。

2. デバイスが縦向きに回転します。

3. UIViewController の shouldAutorotateToInterfaceOrientation は、すべての方向に対して YES を返します。

4. アプリが縦向きに回転します。

5. ユーザーがスイッチを無効に切り替えます。

6. デバイスが横向きに回転します。

7. UIViewController の shouldAutorotateToInterfaceOrientation は、ポートレイト以外は NO を返します。

8.アプリが回転しません。

9. ユーザーがスイッチを切り替えて有効にします。

10.アプリは横向きに回転する必要があります。これが問題です。

4

3 に答える 3

1

試していませんがviewControllerメソッドattemptRotationToDeviceOrientation(iOS5)があります。試してみる価値があるかもしれません。興味深い問題です。効果があればまた報告します。

// call this method when your return value from shouldAutorotateToInterfaceOrientation: changes
// if the current interface orientation does not match the current device orientation, 
// a rotation may occur provided all relevant view controllers now return YES from shouldAutorotateToInterfaceOrientation:
+ (void)attemptRotationToDeviceOrientation __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);
于 2012-06-28T10:00:37.857 に答える
0

ここで私の答えを参照してください: https://stackoverflow.com/a/13033443/580173

カスタム UINavigationController を作成しました。そこで、自分がどのビューにいるかを確認し、適切なマスクで応答できます。(ルートビューを縦にしたかった)

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    if([self.viewControllers count] == 1) return UIInterfaceOrientationMaskPortrait;
    return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape;
}
于 2012-10-23T15:03:56.077 に答える
-1

自動回転を扱う「Technical Q&A QA1688」を読むことができ、すべてのビューコントローラーでメッセージ shouldAutorotateToInterfaceOrientation: return the correct value に応じて、スイッチの設定に応じて正しい値を返すことができます。info.plist にもスイッチがあります。ここでも正しい設定を行っていることを確認してください

于 2012-06-28T10:07:18.503 に答える