1
我試圖讓父視圖控制器顯示一個子視圖控制器的視圖。我有下面父母的viewDidLoad
:容器/子UIViewControllers和狀態欄
-(void)viewDidLoad
{
[super viewDidLoad];
// create child view controller
[self setMenuController:[[MenuViewController alloc] initWithNibName:@"MenuView" bundle:nil]];
[self addChildViewController:[self menuController]];
// move the child view down 30 pt
CGRect frame = [[[self menuController] view] frame];
frame.origin.y = 30;
[[[self menuController] view] setFrame:frame];
[[self menuController] setWantsFullScreenLayout:YES];
[[self view] addSubview:[[self menuController] view]];
[[[self menuController] view] setNeedsLayout];
}
子視圖控制器的廈門國際銀行是簡單地用一箇中心,部分透明UIImageView
(見重疊)紅色視圖。
如果我禁用application:didFinishLaunchingWithOptions:
狀態欄,我得到如下:
如果我能夠在狀態欄,我得到:
有了一個狀態欄,子控制器的UIView
會自動調整以爲狀態欄的位置騰出空間(因爲圖像視圖居中,這就是頂部10分和底部)。由於這是一個子視圖,因此它應該始終使用視圖控制器視圖的全部大小,而不管父視圖是否具有狀態欄。除了將任何子視圖的大小調整爲20像素或在子視圖控制器中使用包裝視圖之外,是否有任何方法可以實現此目的?
它們兩個都是一樣的,0,0 /正確的寬度,正確的高度。 setWantsFullScreen是我試圖保持視圖大小不變的一件事,它沒有做任何事情,但我試圖將它留在那裏作爲例子。 – Turch 2013-04-23 15:36:28
@Turch,我想你應該將原點設置爲superview的bounds.origin.y +30(如果在viewDidAppear中檢查它,狀態欄顯示,則控制器視圖的frame.origin.y將爲20)。但我對你的圖片中發生的一切有點混淆。我編輯了我的帖子,我認爲它應該起作用。請注意,我在viewDidAppear中執行它,因爲這些框架尚未在viewDidLoad中設置。 – rdelmar 2013-04-23 19:15:13