gpt4 book ai didi

ipad - iOS 7's drawViewHierarchyInRect doesn' t 工作?

转载 作者:行者123 更新时间:2023-12-04 18:43:21 26 4
gpt4 key购买 nike

据我所知,iOS7 的新版本 drawViewHierarchyInRect应该比 CALayer 的更快 renderInContext .并根据 thisthis ,这应该是一个简单的调用问题:

[myView drawViewHierarchyInRect:myView.frame afterScreenUpdates:YES];

代替
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];

但是,当我尝试这样做时,我只会得到空白图像。执行捕获的完整代码,其中“self”是 UIView 的子类,
        // YES = opaque. Ignores alpha channel, so less memory is used.
// This method for some reasons renders the
UIGraphicsBeginImageContextWithOptions(self.bounds.size, YES, self.window.screen.scale); // Still slow.

if ( [AIMAppDelegate isOniOS7OrNewer] )
[self drawViewHierarchyInRect:self.frame afterScreenUpdates:YES]; // Doesn't work!
else
[self.layer renderInContext:UIGraphicsGetCurrentContext()]; // Works!

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

contentImageView.image = image; // this is empty if done using iOS7's way

contentImageView 是一个 UIImageView,在初始化期间作为 subview 添加到 self 中。

此外,我想在图像中捕获的绘图包含在其他 subview 中,这些 subview 也在初始化期间作为 subview 添加到 self (包括 contentImageView)。

任何想法为什么在使用 drawViewHierarchyInRect 时会失败?

* 更新 *

如果我绘制特定的 subview ,我会得到一个图像,例如:
[contentImageView drawViewHierarchyInRect:contentImageView.frame afterScreenUpdates:YES];

或者
[self.curvesView drawViewHierarchyInRect:self.curvesView.frame afterScreenUpdates:YES];

但是我需要将所有可见的 subview 组合成一个图像。

最佳答案

self.bounds 试试而不是 self.frame — 有可能您正在获得在您创建的图像上下文边界之外呈现的 View 图像。

关于ipad - iOS 7's drawViewHierarchyInRect doesn' t 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19822042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com