首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为CGLayer创建CGContext

为CGLayer创建CGContext
EN

Stack Overflow用户
提问于 2012-06-26 20:57:23
回答 2查看 2K关注 0票数 0

我想预先渲染一些图形到CGLayer中,以便将来快速绘制。

我发现CGLayerCreateWithContext需要一个CGContext参数。在drawRect:方法中可以很容易地找到它。但是我需要在drawRect:之外创建一个CGLayer。我应该在哪里获得CGContext

我应该简单地创建临时CGBitmapContext并使用它吗?

更新:我需要在drawRect之外创建CGLayer :因为我想在呈现CGLayer之前对其进行初始化。在第一次drawRect调用时初始化一次是可能的,但这对我来说并不是一个很好的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-27 14:53:42

没有理由在drawRect:之外做这件事,事实上,在内部做有一些好处。例如,如果您更改视图的大小,图层仍将使用正确的大小(假设它基于视图的图形上下文,而不仅仅是任意大小)。这是一种常见的做法,我不认为在外部创建它会有好处。无论如何,大部分CPU周期都会花在CGContextDrawLayer上。

票数 0
EN

Stack Overflow用户

发布于 2016-07-15 03:53:46

你可以通过这个函数来创建它,你可以在render块中渲染你的内容

代码语言:javascript
复制
typedef void (^render_block_t)(CGContextRef);

- (CGLayerRef)rendLayer:(render_block_t) block {
    UIGraphicsBeginImageContext(CGSizeMake(100, 100));
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGLayerRef cgLayer = CGLayerCreateWithContext(context, CGSizeMake(100, 100), nil);
    block(CGLayerGetContext(cgLayer));
    UIGraphicsEndImageContext();
    return cgLayer;
}

我几天前写的。我用它在可变线程中绘制一些UIImages。您可以在https://github.com/PengHao/GLImageView/上下载代码,文件路径为GLImageView/GLImageView/ImagesView.m

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11207801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档