CGRect 到 UIImage

Posted

技术标签:

【中文标题】CGRect 到 UIImage【英文标题】:CGRect to UIImage 【发布时间】:2011-09-28 14:48:44 【问题描述】:

我有这个代码:

CGRect visibleRect;
visibleRect.origin = mainViewController.scrollView.contentOffset;
visibleRect.size = mainViewController.scrollView.bounds.size;

我想将visibleRect 中的内容存储在UIImage 中。这可能吗?

【问题讨论】:

【参考方案1】:

此代码可能有效:

UIGraphicsBeginImageContext(visibleRect.size);
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), visibleRect.origin.x,
    visibleRect.origin.y);
[mainViewController.scrollView.layer 
    renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

【讨论】:

renderInContext 未找到,为什么? 这只是一个警告,对吧?我认为它仍然可以工作 - 编译器在 layer 方法上出现问题,即使它们在那里并且可以正常工作。 我添加了#import 然后它现在可以工作了,但是我有一个白色的矩形而不是滚动视图的内容 @blackguardian:谢谢,您刚刚修复了我在尝试在视图层上调用 setMasksToBounds 时收到的警告(正确的导入语句使警告消失了,尽管代码与警告)。 关于白色矩形,我不确定mainViewController.scrollView 是否是正确的视图。 UIScrollView(我猜你的 scrollView 对象就是这个)可以包含其他视图(然后在滚动视图的范围内使其可滚动) - 您可能只需要确定对象中的哪个实际视图结构包含您要捕获的图像。【参考方案2】:

您不能在 CGRect 中存储 UIImage。你会做如下的事情

CGRect visibleRect;
visibleRect.origin = mainViewController.scrollView.contentOffset;
visibleRect.size = mainViewController.scrollView.bounds.size;

UIImageView* img = [[UIImageView alloc] init];
[img setFrame:visibleRect];
[img setImage:[UIImage imageNamed:@"Your-img"]];
[[self view] addSubview:img];
[img release]; 

【讨论】:

我认为 OP 想要将 CGRect 中的可见内容复制到 UIImage 中 - 就像截屏一样。 不,我想获取滚动视图的可见矩形并将其保存在 UIImageView 或 UIImage 中

以上是关于CGRect 到 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

从孩子到自我的CGRect交集

如何将 UIPopover 附加到以编程方式创建的 CGRect

将图像覆盖到 CGRect swift

从数组中获取 CGRect

initWithStyle:CGRectZero 将“const CGRect”发送到不兼容类型的参数

在缩放的 CGRect iOS 上显示 UIView