在Mac OSX项目中查看控制器不占用整个窗口框架

时间:2013-11-18 00:18:21

标签: objective-c xcode macos uiviewcontroller window

所以我正在创建一个mac OSX应用程序,现在我有一个主视图控制器设置为窗口的大小和一个NSView子视图在视图控制器顶部具有相同的帧大小。但是,这是我得到的结果:(我将NSView子视图粉红色)

enter image description here

我想要的是整个窗口被NSView子视图占用(所以整个窗口应该是粉红色的。)这是我的代码到目前为止:

在AppDelegate.m中:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
    self.mainViewController = [[NSViewController alloc]
                           initWithNibName:Nil bundle:Nil];
    self.mainViewController.view.frame = ((NSView *)self.window.contentView).bounds;
    [self.window.contentView addSubview:self.mainViewController.view];

}  

然后在我的视图控制器中:

-(void)loadView
{
    [super loadView];
    NSView *myView = [[NSView alloc] initWithFrame:self.view.frame];
    CALayer *viewLayer = [CALayer layer];
    [viewLayer setBackgroundColor:CGColorCreateGenericRGB(100.0, 0.0, 0.0, 0.4)];
    [myView setWantsLayer:YES]; 
    [myView setLayer:viewLayer];
    [self.view addSubview:myView];  
}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您应该在view controller方法的loadView:中添加子视图,而不应在此处设置view controller的视图:

-(void)loadView
{
     .
     .
     .

    // [self.view addSubview:myView];    //update this to

    [self setView: myView];
}