2014-05-10 87 views
1

我只是沒有得到我的視圖控制器的權利設置。我已經實現到另一個ViewController中像這樣的視圖控制器:ViewController的高度設置不正確

家長的ViewController:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     [self addTopTabBarController]; 
    } 
    return self; 
} 

- (void)addTopTabBarController { 
    self.topTapController = [[TopBarViewController alloc] init]; 
    [self addChildViewController:self.topTapController]; 
    [self.topTapController didMoveToParentViewController:self]; 
    [self.view addSubview:self.topTapController.view]; 
    self.topTapController.view.frame = CGRectMake(0, 200, 320, 40); 
} 

兒童的viewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 

     // Setup toolbar an set frame 
     self.toolbar = [[UIToolbar alloc] init]; 
     NSLog(@"%f", self.view.frame.size.height); 

    } 
    return self; 
} 

當我登錄了frame.size.height,我得到568.0作爲回報值。爲什麼我之前沒有在父級ViewController中設置返回40?我是否返回了錯誤的財產?

回答

1

嘗試NSLogviewWillAppear方法。

您只能獲得該視圖的尺寸viewWillAppear

+0

現在,它的工作!爲什麼我只能在那裏獲得正確的尺寸? – konturgestaltung

+1

你在致電[super viewWillAppear:animated];在viewWillAppear方法中? –

+1

在init方法中獲取框架的唯一可能方式是將其傳入例如'initWithFrame:(CGRect)rect {};'中。只有在viewWillAppear上,應用程序才能確定應該在哪裏以及它本身的大小。 –