从 UIView 子类创建 CGImage
Posted
技术标签:
【中文标题】从 UIView 子类创建 CGImage【英文标题】:create CGImage from UIView Subclass 【发布时间】:2012-07-15 05:03:22 【问题描述】:如何?
我应该使用 renderInContext:UIGraphicsGetCurrentContext() 从包含绘图(通过 drawRect 方法的核心图形)的视图(UIView 的子类)创建 CG 图像吗?
我有一个视图 myView,我正在其中进行一些绘图。我想用我创建的绘图做一些其他的核心图形操作——比如用导入的照片混合模式等,所以我需要从我假设的 myView 获取一个 CGimage。找不到 CGImage 属性(我的第一个猜测)。四处寻找我找到了下面的解决方案,但是我的子类“没有声明选择器renderInContext”,所以我得到了一个错误。
UIGraphicsBeginImageContext(myView.bounds.size);
[myView renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef cgImage = image.CGImage;
【问题讨论】:
类似问题:Why do I get 'No -renderInContext: method found' warning? 【参考方案1】:-renderInContext:
是 CALayer
上的方法,而不是 UIView
。
改为这样做:
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
您还需要导入 CALayer
的标头:
#import <QuartzCore/QuartzCore.h>
并将您的应用与QuartzCore
框架相关联。
【讨论】:
以上是关于从 UIView 子类创建 CGImage的主要内容,如果未能解决你的问题,请参考以下文章