2014-01-30 6 views
0

Я добавляю GLKView в UIView в UIViewController. В конце концов, я разберу код, чтобы использовать UIViewController и GLKViewController, но пока мои руки связаны и нужно использовать UIViewController.Добавление GLKView через раскадровку и программно

Моя проблема заключается в том, что когда я добавляю GLKView в UIVIew через раскадровку, все работает нормально. Когда я пытаюсь добавить GLKView программно, он, похоже, не совсем правильно инициализируется. Он отображается серым.

Единственная разница в моей реализации, кроме использования IBOutlet, заключается в том, что я вызываю первую и последнюю строки в блоке кода ниже.

glview = [[GLKView alloc] init]; // Non storyboard 
[glview setContext:context]; 
[glview setDelegate:self]; 
[glview setUserInteractionEnabled:YES]; 
[self.view addSubview:glview]; // Non storyboard 

После инициализации я установил сеанс AVCapture. Я установил фрейм на моем GLKView в функции viewWillAppear в контроллерах. Вы видите, почему мой GLKView не получает правильную инициализацию?

ответ

0

Приложение управляет процедурой рисования, поэтому мне нужно отключить «enableSetNeedsDisplay» на моем программно создаваемом GLKView. Следующий код исправил мою проблему. Обратите внимание на предпоследнюю линию.

glview = [[GLKView alloc] init]; 
[glview setContext:context]; 
[glview setDelegate:self]; 
[glview setUserInteractionEnabled:YES]; 
[glview setEnableSetNeedsDisplay:NO]; // HERE IS THE FIX 
[self.view addSubview:glview]; 
Смежные вопросы