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 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的主要内容,如果未能解决你的问题,请参考以下文章
如何将 UIPopover 附加到以编程方式创建的 CGRect