ユーザーエクスペリエンスを向上させるために、コードには次のものが含まれています。
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は使用したくありません。