我想知道是否有人遇到过同样的问题?我完成了调查工作.我找不到任何与我的情况相关的东西.我发现的大多数通用解决方案都说我应该更新一些CAEAGLLayer属性.我假设GMSMapVIEw限制我找不到合适的图层,但我能够找到并更新CAEAGLLayer,如下所示:
[(CAEAGLLayer *)[[[mapVIEw_ subvIEws] objectAtIndex:0] layer] setopaque: NO];[(CAEAGLLayer *)[[[mapVIEw_ subvIEws] objectAtIndex:0] layer] setDrawablePropertIEs:[NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES],kEAGLDrawablePropertyRetainedbacking,kEAGLcolorFormatRGBA8,kEAGLDrawablePropertycolorFormat,nil]];
论坛建议通过将图层的OPAQUE属性设置为NO并将保留的后台属性设置为YES来缓解iOS 6问题.它确实在模拟器上修复了它,但没有修复它.
我偶然发现的最后一个修复程序是将主OpenGL视图的preserveBackBuffer更新为YES.这是我的技术专长结束的地方.我无法找到更新GMSMapVIEw的preserveBackBuffer值的位置或方法.我假设这是解决我的所有屏幕捕获问题的修复程序.似乎只是运行iOS 6的设备的问题.
有没有人对这个问题有一个经过测试的解决方法?
解决方法 在Google Maps for iOS v1.1中,有GMSScreenshot类可以实现此目的.UIImage* image = [GMSScreenshot screenshotOfMainScreen];
但是,这已在v1.2中删除,因为现在可以使用标准图形上下文方法捕获地图图层.假设GMSMapVIEw是’self’的子视图:
- (UIImage *)captureScreen { UIGraphicsBeginImageContextWithOptions(self.frame.size,YES,0.0f); [self.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetimageFromCurrentimageContext(); UIGraphicsEndImageContext(); return image;}总结
以上是内存溢出为你收集整理的在Google Maps SDK for iOS上拍摄GMSMapView的屏幕截图全部内容,希望文章能够帮你解决在Google Maps SDK for iOS上拍摄GMSMapView的屏幕截图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)