2017-02-24 49 views
-3

代碼:的UINavigationController donesn't正常工作

UINavigationController * childNaviVC = [[UINavigationController alloc] initWithRootViewController:self.subVC]; 
[self addChildViewController:childNaviVC]; 
[self.view addSubview:childNaviVC.view]; 
[childNaviVC.view setFrame:CGRectMake(0.0f, 0.0f, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)]; 
self.subVC.view.frame = childNaviVC.view.frame; 
[childNaviVC.view addSubview:self.subVC.view]; 
[childNaviVC didMoveToParentViewController:self]; 

我想要做的就是添加一個UINavigationController(childNaviVC)爲子視圖 - 控制指定的VC(subVC),並使用UINavigationController的根來的viewController顯示內容; 我遇到的問題是UINavigationController的根視圖(subVC)的大小是與UINavigationController一致的父VC

紅色視圖大小不等於青色 enter image description here

感謝

+0

我只是想顯示viewWillAppear中功能不起作用 – Snail

+0

設幀的大小是偏移導航欄? – Snail

+0

childrenVC的導航欄 – shallowThought

回答

-1

添加功能viewDidLayoutSubviews給VC兒童,它工作。 - (無效){viewDidLayoutSubviews

self.view.frame=CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height); 
} 
+0

我可以知道在哪個控制器中'viewDidLayoutSubviews'類你必須寫這個框架設置嗎? – CodeChanger

+0

它是'self.subVC' – Snail

+0

它是真正的工作 – Snail

0

的一個問題是,你是雙重添加子視圖的視圖。 subVC的addSubView將打破導航控制器中的自動佈局約束。

更改您的通話符合以下條件,看看有什麼結果,你得到:

UINavigationController * childNaviVC = [[UINavigationController alloc] initWithRootViewController:self.subVC]; 
[self addChildViewController:childNaviVC]; 
[self.view addSubview:childNaviVC.view]; 
[childNaviVC.view setFrame:self.view.bounds]; 
[childNaviVC didMoveToParentViewController:self];