iphone - 窗口截图时间过长
<p><p>我正在使用以下代码在用户的点击操作上截取应用窗口的屏幕截图:</p>
<pre><code>UIGraphicsBeginImageContextWithOptions(self.view.window.bounds.size, self.view.opaque, 0.0);
;
CGImageRef imageRef = CGImageCreateWithImageInRect(, CGRectMake(0, 0, 640, self.view.window.layer.frame.size.height *2));
</code></pre>
<p>-对<code>imageContext</code>进行一些操作-</p>
<pre><code>myImage = UIGraphicsGetImageFromCurrentImageContext();
</code></pre>
<p>现在,屏幕截图很好,但渲染它所花费的时间令人难以忍受。我需要在用户点击后立即呈现动画,但在屏幕截图图像存储在 <code>myImage</code> 中之前我无法开始动画。</p>
<p>有没有一种快速的方法来做到这一点,就像 Facebook 在墙上做的那样(当打开图像浏览器时),或者他们是否使用了其他一些技术?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>通过在后台线程和主线程之间分配任务,我设法稍微加快了进程。</p>
<p>我在后台线程<code>dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//代码
});</code> :</p>
<ul>
<li>开始<code>CGImageContext</code> </li>
<li>创建<code>CGImageRef</code></li>
<li>使用 <code>renderInContext</code></li> 创建屏幕截图
<li>对我需要的 imageRef 进行操作。</li>
<li>将最终的 <code>UIImage</code> 传递给 <code>selector</code>,它进一步将图像设置为我想要的变量(在我的例子中为 <code>UIImageView</code>)。</li>
<li>结束并释放图形上下文。</li>
</ul>
<p>在 block 末尾调用的 <code>selector</code> 中,我使用 <code>dispatch_async(dispatch_get_main_queue(), ^{ 将图像设置为 <code>UIImageView</code>
//代码<br/>
});</code></p></p>
<p style="font-size: 20px;">关于iphone - 窗口截图时间过长,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/18593885/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/18593885/
</a>
</p>
页:
[1]