我需要捕获 UIScrollView 内的大 UIView 的一部分。
我正在使用 CALayer 的方法renderInContext:
2年多以来。
即使该方法在 99% 的情况下无法渲染特殊对象(如 MapView),它仍然完美且足够快,足以满足我的需求。
但在 iOS7 中,许多组件的渲染完全是错误的(并且在 iOS 7.1 的最新版本中变得更糟)。
所以我想使用似乎更专注于此的新方法,例如 UIView 的drawViewHierarchyInRect:afterScreenUpdates
.
不幸的是,我无法使其在真实设备上工作,它呈现黑色图像(空内容)。
它只在模拟器上(无论是否有视网膜)和 - 我认为 - 在非视网膜真实设备上(我已经在第一代 iPad mini 上进行了测试)工作得像一个魅力......
总结:
- iPad 模拟器工作
- iPad 视网膜模拟器工作
- iPad mini(第一代)工作正常
- iPad 3 和 4 代无法正常工作
- iPad Air 无法使用
在这里您可以找到一个显示该问题的简单 Xcode 项目。 https://github.com/jfradj/ScreenshotIssue
在模拟器上运行它,然后在真实(视网膜)设备上运行它以查看差异和问题。
我在这篇文章的末尾附上了两个屏幕截图来显示这一点。左图显示了结果renderInContext:
方法,正确的显示drawViewHierarchyInRect:afterScreenUpdates
方法结果。
我已经为此挠头太久了!
我什至通过 Apple DTS 寻求帮助,但被拒绝了,说这听起来像是 Apple 的错误,并且我应该填写错误报告(我已经做了很长时间的事情)。
如果您有任何想法、评论等...我将非常感激。
Thanks
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)