0

GLKView我正在尝试在 a (实际上是a )之上创建一个叠加层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;
}

然后我在 a 中调用了以下内容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.

知道为什么这不起作用吗?

4

1 回答 1

0

由于您将其添加为子视图,因此您应该使用 bounds 属性而不是父视图中的 frame 属性,如下所示:

CGRect frame = self.view.bounds;

如果这不能解决问题,请尝试将 _readerView 的背景颜色设置为明显的颜色,以确保问题不是内容丢失,如下所示:

_readerView.backgroundColor = [UIColor redColor];

最后,如果这些都不能解决问题,那么可能直接将子视图添加到 EAGL 视图是问题所在。在这种情况下,创建一个容器视图并将您的 EAGL 视图和 _readerView 添加到其中。

于 2012-01-20T00:33:40.593 回答