2010-03-13 5 views
3

У меня есть класс под названием ModelView, который наследуется от NSOpenGLView. Когда моя программа запускается, я присоединяю ModelView следующим образом к главному окну.NSOpenGLView resize on window resize

- (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];   
} 

В моем классе видового я быть_наст функция перекроить, которая стреляет каждый раз, когда окно изменяет размер

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

Я хочу, чтобы получить основную ширину окна, так что я могу изменить размер видового, но я не могу найти, как чтобы получить ширину окна из класса видовую

Я достаточно новый для какао/Objective-C, так что любая помощь ценится

ответ

1

каждый вид имеет свойство окна, так [self window] получите окно, и [[[self window] contentView] bounds].size.width даст ширину, хотя вы можете напрямую добраться до contentView с помощью [[self superview] bounds].size.width

+0

Спасибо однако [[само parentView] оценка] .size.width дает мне предупреждение видовым могут не реагировать на '-parentView' и [[[окно окна] contentView].] .size.width возвращает 0. Что я делаю не так ?? – ADAM

+0

@ADAM ах, забыл, что это супервизор, отредактирован. – cobbal