[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: の対応が必要となりました。
関連記事
-
APNs のサーバー側をサポートしてくれる Urban Airship (APNs対応その2)
Apple Push Notification Service (APNs) はAppleのAPN
-
Linking 対応デバイス tomoru
この前 Makuake で出資しそこねた Tomoru が Amazon で ¥ 1,069 + ¥
-
[iOS SDK] iPhone/iPad はサイレントモードにしても音が鳴る
この前、iOS5 を入れた iPad2 で おんぷちゃん for iPad から音が鳴らない、ほかの
-
おんぷちゃん for iPad にオンライン授業サポート機能を追加
コロナウィルスの影響で、うちの子どもたちのピアノレッスンもオンライン授業になりまし
-
[iOS] iPhone とつながるG-SHOCKの注意すべき仕様
CASIO 腕時計 G-SHOCK ジー・ショック Bluetooth Low Energy対応
-
Xcode 設定しておくと便利なカスタマイズいろいろ
以前から Xcode はもう一歩使いにくいと思っていたが、iPhone アプリで稼げるのか でカスタ
-
Pebbleアプリ改造中
PebbleアプリEverLearnを改造中です。1秒1単語で1分間で60単語を表示。左が初代Peb
-
Apple Special Event 2017
2017年は仕事で死んでいたので、Special Eventの記事を書けていなかった。記録
-
スマートフォン手袋を買ってみた 2010
今使っている手袋に穴が空いたので、せっかくなのでスマートフォンが使える手袋を買ってみようと思い探して
-
MacFan 2017年5月号でアプリ紹介されました
Mac Fan 2017年5月号 でおんぷちゃん for iPad を紹介していただきました。ありが