0

ビューがユーザーに表示される通常の方法ではなく、メソッド-glkView:drawInRect:の描画であることを検出できるかどうかを調べています。-snapshotビューを正しく描画する方法を検出できるようにするためです。ビューの違いを検出する私の試みは、渡されたビューを-glkView:drawInRect:GLKViewController のビューと比較することでした。

// standard function GLKViewController
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
    if ((self.view != view)) NSLog(@"drawing for snapshot");
    // draw code ...
}

しかし、運がありません。私が検討していた別の方法-snapshotは、呼び出されるたびに設定さ-glkView:drawInRect:れ、スナップショット固有のビューを描画した後にリセットされるブール変数を作成することでした。しかし、それは汚いように見え、特に 60 fps で描画する場合、複数のバグを引き起こす可能性があります。

-glkView:drawInRect:メソッドが描画されているかどうかを検出するための推奨事項や例はあり-snapshotますか?

前もって感謝します

4

1 に答える 1

0

メソッドをサブクラス化し、次GLKViewのように上書きします。snapshot

- (UIImage *)snapshot
{
    self.isDrawingSnapshot = YES;

    UIImage *result = [super snapshot];

    self.isDrawingSnapshot = NO;
    return result;
}

プロパティの代わりに、カスタム デリゲートを使用してビュー コントローラーに通知したり、NSNotification.

于 2012-11-11T06:07:03.920 に答える