iOS: создание наложения поверх EAGLView / GLKView - PullRequest
0 голосов
/ 18 января 2012

Я пытаюсь создать оверлей поверх GLKView (фактически EAGLView).Я знаю о влиянии на производительность, но в моей ситуации это не проблема, поскольку сцена приостанавливается в фоновом режиме, она просто должна оставаться видимой.

Я создал пользовательский UIView с именем ReaderView чей единственный пользовательский код:

-(CALayer*)layer {
CATextLayer *textLayer = [[CATextLayer alloc] init];

// Layer settings.
[textLayer setCornerRadius:5.0f];

// Text settings.
[textLayer setFont:CGFontCreateWithFontName((CFStringRef)READING_FONT)];
[textLayer setFontSize:READING_FONT_SIZE];
[textLayer setAlignmentMode:kCAAlignmentJustified];
[textLayer setWrapped:YES];

return textLayer;
}

Затем я вызвал следующее в GLKViewController:

-(void)onMyCustomEvent {
if (_readerView==nil) {
    CGRect frame = [[self view] frame];
    frame.size.width *= 0.8f;
    frame.size.height *= 0.8f;
    _readerView=[[ReaderView alloc] initWithFrame:frame];
    [_readerView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
}
[_readerView setText:[node content]];
[[self view] addSubview:_readerView];
}

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

Есть идеи, почему это не работает?

1 Ответ

0 голосов
/ 20 января 2012

Поскольку вы добавляете его как подпредставление, вы должны использовать свойство bounds вместо свойства frame из родительского представления, например:

CGRect frame = self.view.bounds;

Если это не помогло, попробуйтеустановка цвета фона _readerView на что-то заметное, чтобы убедиться, что проблема не в отсутствии содержимого, например:

_readerView.backgroundColor = [UIColor redColor];

Наконец, если ничего из этого не решает, то, возможно, непосредственно добавляя подпредставления кEAGL вид это проблема.В этом случае создайте представление контейнера и добавьте к нему представление EAGL и _readerView.

...