我正在查看-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
?
提前致谢
答案 0 :(得分:0)
子类GLKView
并将snapshot
方法覆盖为以下内容:
- (UIImage *)snapshot
{
self.isDrawingSnapshot = YES;
UIImage *result = [super snapshot];
self.isDrawingSnapshot = NO;
return result;
}
您也可以使用自定义委托来通知视图控制器或发布NSNotification
,而不是属性。