从 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的主要内容,如果未能解决你的问题,请参考以下文章

如何初始化从 xib 加载的 UIView 子类?继承问题

子类化 UIView 并显示多个实例

带有 Xib 文件的 UIView 的子类

iOS:在故事板中将子类从 UIView 更改为 UIScrollView

创建 UIView 的子类 [关闭]

创建后调整uiview子类的大小