drawViewHierarchyInRect:afterScreenUpdates和renderInContext:不工作......其他解决方案?

时间:2014-08-21 17:19:24

标签: ios uiview uiscrollview calayer snapshot

我需要捕获UIScrollView中的大UIView的一部分。

我使用CALayer的方法renderInContext:已有两年多了。 即使该方法无法渲染特殊对象(如MapView),99%的时间它也足以满足我的需求。

但是对于iOS7,许多组件的渲染完全是错误的(并且在最新版本的iOS 7.1中变得更糟)。 所以我想使用似乎更专注于它的新方法,比如UIView的drawViewHierarchyInRect:afterScreenUpdates

不幸的是,我无法让它在真实设备上运行,它会渲染黑色图像(空白内容)。 它只是在模拟器(视网膜或非视网膜)上工作,而且 - 我认为 - 在非视网膜真实设备上(我已经在第一代iPad mini上测试过)... 总结一下:

  • iPad模拟器正常工作
  • iPad视网膜模拟器工作
  • iPad mini(第1代)工作
  • iPad 3和4 gen无法正常工作
  • iPad Air无法正常工作

Here you can find a simple Xcode project that is showing the issue.

在模拟器上运行,然后在真实(视网膜)设备上运行,以查看差异和问题。

我在这篇帖子的末尾附上了两个截图,显示了这一点。左侧图像使用renderInContext:方法显示结果,右侧显示drawViewHierarchyInRect:afterScreenUpdates方法结果。

我现在已经很久了! 我甚至通过苹果D​​TS请求了帮助,这被拒绝说这听起来像是一个苹果虫,我应该填写一份错误报告(我已经做了很长时间了)。

如果你有任何想法,评论等......我会非常感激。

由于

Simulator Result iPad Air Result

0 个答案:

没有答案