drawViewHierarchyInRect:afterScreenUpdates和renderInContext:不工作……其他解决方案?
我需要捕获UIScrollView中的大UIView的一部分。
我使用CALayer的方法renderInContext:
因为超过2年。 即使该方法无法渲染特殊对象(如MapView),99%的时间它完美且足够快以满足我的需求。
但是对于iOS7,许多组件的渲染完全是错误的(并且在最新版本的iOS 7.1中变得更糟)。 所以我想使用似乎更专注的新方法,比如UIView的drawViewHierarchyInRect:afterScreenUpdates
。
不幸的是,我无法让它在真实设备上运行,它渲染黑色图像(空内容)。 它只是在模拟器(视网膜或非视网膜)上的魅力,而且 – 我认为 – 在非视网膜真实设备上(我在第一代iPad mini上测试过)…总结:
- iPad模拟器工作
- iPad视网膜模拟器工作
- iPad mini(第1代)工作
- iPad 3和4 gen无法正常工作
- iPad Air无法正常工作
在这里,您可以找到一个显示问题的简单Xcode项目。
在模拟器上运行它,然后在真实(视网膜)设备上运行它以查看差异和问题。
我在这篇post的末尾附上了两个截图,显示了这一点。 左侧图像使用renderInContext:
方法显示结果,右侧显示drawViewHierarchyInRect:afterScreenUpdates
方法结果。
因为太久了我已经抓住了它! 我甚至通过苹果DTS请求帮助,这被拒绝说这听起来像是一个Apple bug,我应该填写一个bug报告(我已经做了很长时间了)。
如果您有任何想法,评论等…我将非常感激。
谢谢