我正在尝试在GLKView
(实际上为EAGLView
)之上创建叠加层。我知道性能影响,但在我的情况下这不是问题,因为场景在后台暂停,它只需要保持可见。
我创建了一个名为ReaderView
的自定义UIView,其唯一的自定义代码如下:
-(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
上没有显示任何内容。
知道为什么这不起作用?
答案 0 :(得分:0)
由于您要将其添加为子视图,因此您应该使用bounds属性而不是父视图中的frame属性,如下所示:
CGRect frame = self.view.bounds;
如果这样做无法修复,请尝试将_readerView的背景颜色设置为可识别的内容,以确保问题不是缺少的内容,如下所示:
_readerView.backgroundColor = [UIColor redColor];
最后,如果没有一个解决它,那么可能直接将子视图添加到EAGL视图就是问题所在。在这种情况下,请创建一个容器视图,然后将EAGL视图和_readerView添加到该视图中。