NSOpenGLView在窗口调整大小时的调整

3

我有一个名为ModelView的类,它继承自NSOpenGLView。当我的程序运行时,我会将ModelView附加到主窗口中,方法如下:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application 
    ModelView *glView; 
    NSRect glViewRect = CGRectMake(0.0f, 0.0f, window.frame.size.width, window.frame.size.height);
    glView = [[ModelView alloc] initWithFrame: glViewRect];
    [[window contentView] addSubview:glView];           
}

在我的ModelView类中,有一个reshape函数,每次窗口调整大小都会触发它

- (void)reshape
{
    [super setNeedsDisplay:YES];
    [[self openGLContext] update];  
    NSLog(@"reshap function called");
}

我想获取主窗口的宽度,以便调整ModelView的大小,但我找不到从ModelView类中获取窗口宽度的方法。

我对cocoa/objective-c相对较新,任何帮助都将不胜感激。

1个回答

1
每个视图都有一个window属性,所以`[self window]`将获取窗口,而`[[[self window] contentView] bounds].size.width`将给出宽度,尽管你可以直接通过使用`[[self superview] bounds].size.width`来访问contentView。

谢谢,但是[[self parentView] bounds].size.width给我一个警告ModelView可能无法响应'-parentView',而[[[self window] contentView] bounds].size.width返回0。我做错了什么? - ADAM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接