0

ユーザーエクスペリエンスを向上させるために、コードには次のものが含まれています。

if (allowLandscape) {
    return UIInterfaceOrientationIsLandscape(toInterfaceOrientation) || toInterfaceOrientation == UIInterfaceOrientationPortrait;
}
else {
    return toInterfaceOrientation == UIInterfaceOrientationPortrait;
}

したがって、allowLandscapeがYESに設定されている場合、ユーザーはすべての一般的なデバイスの向きでアプリを操作できます。ただし、allowLandscapeはいつでもNOに設定できるため、UIViewControllerを回転させて縦向きに戻したいと思います。

次のコードは、ユーザーがデバイスの向きを手動で変更した場合にのみ機能します。したがって、allowLandscapeがYESの場合、彼はデバイスを回転させることができ、インターフェイスの向きは向きの変更に従います。しかし、彼が横向きのままで、allowLandscapeがNOに設定される場合、iPhoneを縦向きに移動するまで、横向きのままになります。allowLandscapeがまだNOの場合、縦向きは変更できません。

私が達成したいのは、いくつかのメソッドを呼び出して、可能であればViewControllerにアニメーションで方向を更新させることです。

メソッドの呼び出し:

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:YES];

ステータスバーを変更するだけですが、インターフェイスは以前の方向のままです。文書化されていないAPIは使用したくありません。

4

1 に答える 1

0

解決策は次のとおりです。

    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

このコードを追加することにより、View Controllerは、ビューをどの方向に表示するかを再度尋ねます。

于 2011-10-16T13:54:09.267 に答える