2014-05-10 59 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上,应用程序才能确定应该在哪里以及它本身的大小。 –