CoreGraphics框架在iOS开发中,与UIKit相依为命,占着十分重要的位置。所以对于开发者而言,学习和理解CoreGraphics框架肯定是必不可少啦。我们知道,在一个图形上下文之外进行绘图操作是不可能的。要进行绘制,首先要准备图形上下文。接下来我们就讨论一下几种使用graphics context的情况。
一般来讲,我们会建立一个UIView的子类,重载其drawRect:方法,执行该方法的时候系统会为我们准备一个图形上下文。
UIGraphics.h:
UIGraphicsGetCurrentContext()
//在drawRect中直接获得图形上下文:
CGContextRef context = UIGraphicsGetCurrentContext();
不过,在其他情况下,比如对图片的处理,截图,缩放等,需要我们手动创建图形上下文。
先来了解一下获得图形上下文的相关方法:
UIGraphics.h中:
UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale)
参数:
void UIGraphicsBeginImageContextWithOptions(
CGSize size,
BOOL opaque,//否不透明。YES则忽略alpha通道
CGFloat scale//缩放因子。传1.0 普通屏一个点一个像素;传2.0,针对Retina一个点四个像素。传0.0,根据当前设备匹配[UIScreen mainScreen].scale;
);
UIGraphicsBeginImageContext(CGSize size)
参数:
void UIGraphicsBeginImageContext (
CGSize size
);
//这个相当于UIGraphicsBeginImageContextWithOptions (CGSize size,NO,1.0).
所以不推荐UIGraphicsBeginImageContext(CGSize size)。
多使用UIGraphicsBeginImageContextWithOptions()。
创建上下文,并将绘制的图保存到UIImage中
1 |
|
将绘制的图保存到UIImage中
1 |
|
大部分情况下,我们绘制的时候,都是子类化UIView,在drawRect:方法中绘制,并通过 setNeedsDisplay刷新。
几个绘制常用的属性
- path
- shadow
- stroke
- line width
- clip path
- file color