CoreGraphics相关

这是ios的绘图框架。简单来说,我们看到的手机上的一切都是绘制出来的。所以这个框架举足轻重,比如,UIKit的底层就是基于CoreGraphics的。除此之外,UIImage、NSString、UIBezierPath、UIColor等也都提供了绘制自己的接口。

如UIImage的

- (void)drawInRect:(CGRect)rect blendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha;

NSString的

- (void)drawInRect:(CGRect)rect withAttributes:(NSDictionary *)attrs;

等等。

1,ios绘图的常见实现方式

主要有两种:

1,调用UIView的drawRect:(CGRect)rect;方法。这个接口通过setNeedsDisplay来调起。绘图任务由CPU来完成。

2,调用UIView的layoutSubViews方法。这个接口通过setNeedsLayout来调起。绘图任务由GPU完成。

上面两个方法都是UIView提供的。推荐尽可能多使用layoutSubViews来实现绘图,因为GPU擅长渲染,CPU不擅长渲染。

2,UIView的绘制时机

UIView保持一定帧率的绘制是界面保持流畅的根本所在。绘图有一个绘图周期的概念。绘图是GPU在做。绘图的绘制时机是由主线程的runloop通知主线程调起GPU来完成的。

3,上下文 Context

所有的绘制工作都是在一个上下文中进行的。这个上下文可以理解为一个画布。实际上基于CoreGraphics的很多api都需要Context的参与。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容