トップ «前の日記(2012-10-08) 最新 次の日記(2012-10-11)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|

2012-10-10 [iOS]画面遷移(始点)

「独自のコンテナViewController」に戻る。

サンプルコードはRetina 4inchは考慮していないので、試す場合は、以前の画面サイズで行って欲しい。画面と同じサイズのDefault.pngを用意する。その際、座標が分かりやすい図とする。そして、最初に表示するViewControllerの画面にも、Default.pngを貼付けて欲しい。そして、実行するとどうなるか?最初の画面が表示される際に、図が少し下がったように見えないか?

これは、親ビューコントローラのビューの座標の始点が、ステータスバー分だけ下がっているが、nibでの子ビューコントローラーのビューの座標が、ステータスバーを考慮して下げられているからだ。

なので、小ビューコントローラのビューの始点を原点にすれば、解決する。

@implementation CVCViewController
...
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    /* 子ビューコントローラを取得 */
    UIStoryboard    *oneStoryboard = [UIStoryboard storyboardWithName:@"OneStoryboard" bundle:nil];
    UIStoryboard    *twoStoryboard = [UIStoryboard storyboardWithName:@"TwoStoryboard" bundle:nil];
    OneViewController   *oneViewController = [oneStoryboard instantiateInitialViewController];
    TwoViewController   *twoViewController = [twoStoryboard instantiateInitialViewController];
    
    /* コンテナViewControllerの子ViewControllerに登録 */
    [self addChildViewController:oneViewController];
    [self addChildViewController:twoViewController];
    oneViewController.cvcViewController = self;
    twoViewController.cvcViewController = self;
    
    /* 強制的に呼ぶ */
    [oneViewController didMoveToParentViewController:self];
    [twoViewController didMoveToParentViewController:self];
    
    /* 最初の画面を設定 */
    self.selectedViewController = [self.childViewControllers objectAtIndex:0];
    CGRect  frame = self.selectedViewController.view.frame;
    frame.origin = CGPointMake(0.0, 0.0);
    self.selectedViewController.view.frame = frame;
    [self.view addSubview:self.selectedViewController.view];
}
...
@end

これで、少し悩んだ事があった。

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

トップ «前の日記(2012-10-08) 最新 次の日記(2012-10-11)» 編集