core graphics绘图
NSSet是无序的
NSSet使用NSEnumerator遍历
NSSet anyobject是返回第一个对象
贝赛曲线 需要跟CALayer配合使用
iOS提供了两套绘图框架:core graphics和UIBezierPath。
1、UIBezierPath需要和CALayer配合使用 UIKit框架 贝赛曲线,层,
2、Core Graphics需要contextRef,上下文环境。Core Graphics(ContextRef)
Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎。它提供了低级别、轻量级、高保真度的2D渲染。该框架可以用于基于路径的绘图、变换、颜色管理、脱屏渲染,模板、渐变、遮蔽、图像数据管理、图像的创建、遮罩以及PDF文档的创建、显示和分析。core graphics所有的绘制都在上下文中进行,绘图之前需要获取上下文并且传入执行渲染的函数。如果正在渲染一个在内存中的图片,需要传入图片所属的上下文。获取一个图形上下文是绘图任务第一步。
获取图形上下文的方法:
第一种方法:创建一个图片类型的上下文。
UIGraphicsBeginImageContext:创建图形上下文
UIGraphicsBeginImageContextWithOptions:创建图形上下文
UIGraphicsGetImageFromCurrentImageContext:从图形上下文获取图像
UIGraphicsEndImageContext:关闭图形上下文
第二种方法:重写drawrect方法,cocoa会为你自动创建一个图形上下文,所有绘图操作都会显示在uiview上。
使用UiKit,你只能在当前上下文中绘图,所以如果你当前处于UIGraphicsBeginImageContextWithOptions函数或drawRect:方法中,你就可以直接使用UIKit提供的方法进行绘图。如果你持有一个context:参数,那么使用UIKit提供的方法之前,必须将该上下文参数转化为当前上下文。幸运的是,调用UIGraphicsPushContext函数可以方便的将context:参数转化为当前上下文,记住最后别忘了调用UIGraphicsPopContext函数恢复上下文环境。
情况总结:
1、在UIGraphicsBeginImageContextWithOptions和drawRect里
CoreGraphics需要UIGraphicsGetCurrentContext获取绘图上下文
UIKit可以直接进行绘制
drawrect里绘制就是直接绘制在当前view的layer层上。
CGImageCreateWithImageInRect
CGContextDrawImage
网友评论