私は Xcode 4.5.2 で作業しており、ストーリーボードとセグエを使用して、iPad アプリの iOS6 をターゲットにしています。プリアンブル: 私のルート コントローラー (アプリ デリゲートによって読み込まれる) は、画像、アップグレード ボタン、および開くボタンのみを含むスプラッシュ スクリーンです。アプリの読み込みには数秒かかります。3 つのフルスクリーン コントローラすべてに shouldAutorotate と supportedInterfaceOrientations があります。回転通知のために、ルート ビュー コントローラーで次の 2 つのメソッドを使用しています。
- (void)awakeFromNib
{
[UIDevice.currentDevice beginGeneratingDeviceOrientationNotifications];
[NSNotificationCenter.defaultCenter addObserver:self
selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
}
- (void)orientationChanged:(NSNotification *)notification
{
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
if (UIDeviceOrientationIsLandscape(deviceOrientation))
{
// Landscape
CGRect rect = _libraryViewController.libraryTableBorder.frame;
_libraryViewController.libraryTableBorder.frame = rect;
_libraryViewController.libraryTableBorder.image = [UIImage imageNamed:@"LibraryBorder_L.png"];
}
else if (UIDeviceOrientationIsPortrait(deviceOrientation))
{
// Portrait
CGRect rect = _libraryViewController.libraryTableBorder.frame;
_libraryViewController.libraryTableBorder.frame = rect;
_libraryViewController.libraryTableBorder.image = [UIImage imageNamed:@"LibraryBorder_P.png"];
}
}
LibraryViewController にこれらとまったく同じメソッドがあり、完全に機能します。libraryTableBorder の呼び出しなしで同じメソッドを持つ別のメイン ビュー コントローラー (entryView) があります。デバイスがエントリ ビューから、またはエントリ ビューに移動する際の回転に関係なく、テーブルの境界線は正しくスワップ アウトされます。また、ライブラリから entryView またはスプラッシュに移動すると、ビューは正しくなります。
この問題は、ランドスケープのスプラッシュ ビューからライブラリに移行しています。Potrait でライブラリに移動すると正常に動作し、表示される境界線は縦方向の境界線です。ただし、横向きの場合は、縦向きの境界線も表示されます。横向きのルート ビューからライブラリの境界線を横向きに表示するにはどうすればよいですか?
この難問を解決するための助けをいただければ幸いです!!!