Пример GLPaint: как программно создать вид? - PullRequest
1 голос
/ 16 мая 2011

Мне нужно что-то нарисовать на изображении, как в образце GLPaint от Apple, но мне нужно создать поверхность EAGL, в которой программно визуализируется OpenGL.

В этом примереУстановленный в MainWindow.xib

Если я пытаюсь создать представление программно с чем-то вроде:

self.drawingView = [[PaintingView alloc] initWithCoder:nil];
drawingView.frame = CGRectMake(0, 0, 320, 380);
[self.view addSubview:drawingView];

Я получил эту ошибку:

failed to make complete framebuffer object 8cd6

Возможно, что-то связанок инициалу?Есть намеки?Спасибо.

1 Ответ

3 голосов
/ 17 мая 2011

Быстро заглянув внутрь источника, Apple поместила все существенные средства инициализации для PaintingView внутри initWithCoder:, от строк 77 до 168. Это часть протокола NSCoding, который используется для архивирования и разархивирования объектов из файлов.,Если вы вызываете initWithCoder:nil, вполне вероятно, что реализация initWithCoder в UIView не сможет получить какое-то соответствующее значение, в котором оно нуждается.В предположении, он, вероятно, начинает иметь нулевой размер, который не является допустимым размером для объекта кадрового буфера.

Я бы предложил заменить initWithCoder:(NSCoder *)coder на initWithFrame:(CGRect)frame, вызывая то же самое в строке super86. Для еще лучшей реализации, реализуйте оба initWithFrame: и initWithCoder:, имея эти два вызова общего раздела для всего, что заключено в блок if((self = [super initWithXXX:argument])).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...