drawViewHierarchyInRect:afterScreenUpdates and renderInContext: don't work… Other solution?

一个人想着一个人 提交于 2019-12-10 13:44:23

问题


I need to capture a part of a big UIView which is inside a UIScrollView.

I was using the CALayer's method renderInContext: since more than 2 years. Even if the method failed to render special objects (like MapView) 99% of the time it was perfect and fast enough for my needs.

But with iOS7 the rendering of many components is totally buggy (and became worst with the last versions of iOS 7.1). So I wanted to use the new methods that seems to be more dedicated to that like the UIView's drawViewHierarchyInRect:afterScreenUpdates.

Unfortunately I can't manage to make it work on real devices, it's rendering black images (empty contents). It's working like a charm only on the simulator (retina or not) and -- I think -- on non retina real devices (I've tested on the first gen iPad mini)... To sum up:

  • iPad Simulator working
  • iPad retina Simulator working
  • iPad mini (1st gen) working
  • iPad 3 and 4 gen NOT working
  • iPad Air NOT working

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

Run it on the simulator and then on a real (retina) device to see the differences and the issue.

I've attached two screenshots at the end of this post showing that. Left images show the result with the renderInContext: method, the right ones show the drawViewHierarchyInRect:afterScreenUpdates method result.

I've scratched my head on it since too long now! I've even asked help through an Apple DTS which was rejected saying that sounds like an Apple bug and that I should filled a bug report (thing that I've already done for a long).

If you have any idea, comment, etc... I would be really grateful.

Thanks

来源:https://stackoverflow.com/questions/25432222/drawviewhierarchyinrectafterscreenupdates-and-renderincontext-dont-work-ot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!