[iOS SDK] LandscapeとPortraitで xib ファイルを切り替える方法
自分はたいていコードで位置指定するのでこれまで遭遇していなかったけれども Landscape と Portrait で xib ファイル自体を切り替えて対応する方法を調べたのでメモしてみる。
Landscape と Portrait で部品の配置などが大きく異なり、コードでの指定や AutoLayoutでの指定が面倒なときにこの方法を使うことになると思われる。
そもそも今はこういうxibを指定する書き方はしないという話もありそうだけれども。いまだに昔からの書き方でやっている。
にある、下記のコードで対応できた。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if( !nibNameOrNil ) { nibNameOrNil = [self nibNameRotated:[[UIApplication sharedApplication] statusBarOrientation]]; } self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; return self; } - (NSString*) nibNameRotated:(UIInterfaceOrientation)orientation { if( UIInterfaceOrientationIsLandscape(orientation)) { return [NSString stringWithFormat:@"%@-landscape", NSStringFromClass([self class])]; } else { return [NSString stringWithFormat:@"%@", NSStringFromClass([self class])]; } } -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { NSString *nibname = [self nibNameRotated:toInterfaceOrientation]; [[NSBundle mainBundle] loadNibNamed:nibname owner:self options:nil]; [self viewDidLoad]; }
呼び出し側は
xxxViewController *viewC = [[xxxViewController alloc]initWithNibName:nil bundle:nil];
のように、引数 nil で呼び出すことを想定している。
また、Landscape 用の xib ファイルは xxxViewController-landscape.xib とする。
基本的にはAdam氏の方法で対応できるのだが、最初からLandscape状態で呼び出されたときにwillRotateToInterfaceOrientation: が呼ばるまで Portrait状態になってしまうのでinitWithNibName: の対応が必要となりました。
関連記事
-
-
iPhone SDK アプリケーション開発ガイド
iPhone SDK アプリケーション開発ガイド(原題 iPhone SDK Application
-
-
Xcodeの Console出力をクリアするキーバインド
いつも忘れるので、メモとして残しておく。Command(⌘)+ Kその他はこちら。 Menu Com
-
-
iPhoneアプリ おんぷちゃん開発日記 和音表示
自分の娘のために作った五線譜学習アプリ「おんぷちゃん」の開発を細々と続けている。 iPadのグランド
-
-
[iPhone5] ステータスバーの謎の○(丸)表示
iPhone5使い始めて2日目、自宅でもLTE表示が出ていたのになぜかある時から○表示になってしまっ
-
-
Let’s talk iPhone イベント 2011/10/04
今回のイベントも、楽しみにしながら寝て、早朝に起きてから知ることにした。 今回、事前に行われていた予
-
-
iOS上のJavaScript実行環境Scriptableを使ってみた
iOS上の JavaScript実行環境であるScriptable を使ってみた。 Scr
-
-
[iOS SDK] WatchKitでできることできないこと 2015年3月
Apple Watch発売日(2015年4月24日)までに自作アプリの WatchKit対応
-
-
MacFan 2019年11月号購入
毎年この時期は必ず Mac雑誌を買っている。発売されたばかりのiPhone情報が特集されるためだ。
-
-
2009年10月発売のiPhone SDK関連書籍
10月には Beginning iPhone 3 Developmentの続編とApressが言って
-
-
[iPhone5] 使用開始5日目の感想
au iPhone5を発売日翌日(9/22)に購入してから5日経ったので感想を書いてみる。 し