私は最近、Xcode 4.5 (iOS 6) で縦向きから横向きに回転するサブビューを使用して成功しました。回転が機能するようになり、縦向きと横向きの別々のビューを設計できるようになったので、別の問題に遭遇しました。
アプリが縦向きで開くと、すべて問題ありません。しかし、ボタンを押して新しい画面に移動すると。横向きビューが縦向きビューの上に表示されています。シミュレーターを横向きに回転してから縦向きに戻すと、縦向きビューが読み込まれます。
すべてがランドスケープビューで正常に機能します。これは縦表示でのみ発生します。
私の .h ファイルには次のものがあります。
@interface ViewController : UIViewController{
IBOutlet UIView *portraitView;
IBOutlet UIView *landscapeView;
}
//rotate views
@property (nonatomic, retain) IBOutlet UIView *portraitView;
@property (nonatomic, retain) IBOutlet UIView *landscapeView;
そして私の.mファイルにはこれがあります:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];
[self.view addSubview:portraitView];
[self.view addSubview:landscapeView];
}
-(void)didRotate:(NSNotification *)notification
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationPortrait)
{
portraitView.hidden = NO;
landscapeView.hidden = YES;
}
else if (orientation == UIDeviceOrientationLandscapeLeft)
{
portraitView.hidden = YES;
landscapeView.hidden = NO;
}
else if(orientation == UIDeviceOrientationLandscapeRight)
{
portraitView.hidden = YES;
landscapeView.hidden = NO;
}
}
また、すべてのコードを含むメイン/空白のビューと、適切なアウトレットに接続された縦向きと横向きのビューの 3 つのビューを持つ 1 つの xib ファイルもあります。
おそらく簡単なものです!
ありがとう。