gpt4 book ai didi

ios - 当 View 在其边界外绘制时将 UIView 渲染为图像

转载 作者:行者123 更新时间:2023-12-01 18:15:36 25 4
gpt4 key购买 nike

我想将 UIView 渲染为图像。我的首选 UIView 类别是

- (UIImage *)num_renderToImage
{
UIGraphicsBeginImageContext(self.bounds.size);

[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return image;
}

但是在这种情况下,UIView 具有在其边界之外绘制的元素,并且上面的内容会剪切它们。更改传递给 UIGraphicsBeginImageContext 的大小没有帮助,因为大小会向下和向右增长,但这些元素在上方和左侧。执行此操作的正确方法是什么?

最佳答案

在上面的场景中,使用一个 UIView 剪辑一个在其边界之外绘制的 UIButton,您可以尝试:

- (IBAction)snapshot:(id)sender {

UIButton *button = sender;
UIView *v = button.superview;

// Prepare the rectangle to be drawn
CGRect allTheViews = CGRectUnion(v.bounds, button.frame);

UIGraphicsBeginImageContext(allTheViews.size);
CGContextRef context = UIGraphicsGetCurrentContext();

// This is what you differently
CGContextTranslateCTM(context, -allTheViews.origin.x, -allTheViews.origin.y);

// This part is the same as before
[v.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[UIImagePNGRepresentation(img) writeToFile:@"/tmp/foo.png" atomically:NO];
}

在这里,我们将要绘制的内容合并,然后转换 CTM,以便在我们正在绘制的图形上下文中看到它。

(这个例子,特别是,连接到按钮的 Action ,并将按钮的 UIImage 和包含 View 的文件写入文件。您可以根据需要进行调整。)

关于ios - 当 View 在其边界外绘制时将 UIView 渲染为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22314424/

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