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 回答