0

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

なぜこれが機能しないのか考えてみてください。

4

1 に答える 1

0

サブビューとして追加するため、次のように、親ビューのframeプロパティではなくboundsプロパティを使用する必要があります。

CGRect frame = self.view.bounds;

それでも問題が解決しない場合は、_readerViewの背景色を目立つ色に設定して、次のようにコンテンツが欠落していないことを確認してください。

_readerView.backgroundColor = [UIColor redColor];

最後に、それでも解決しない場合は、EAGLビューにサブビューを直接追加することが問題になる可能性があります。その場合は、コンテナビューを作成し、代わりにEAGLビューと_readerViewを追加します。

于 2012-01-20T00:33:40.593 に答える