某天,你正在上班ing……这个时候老大过来了,“小王啊,这个按钮太丑了,客户要求变成五角星形状的,UI没空给你切图,你给我完成这个需求啊”,说完便头也不回的走了,留下你一个人在冷风中摇曳,心里一万只草泥马在狂奔……
OK OK ,自己选的IOS开发,哭着也要完成…… 这里你可能就需要使用绘图这一块的知识了。如果你恰好这块还是比较空白的,那么就是。。。
.
.
.
没关系,先让我们重drawRect,这个方法开始吧。
首先了解一下这个东西干嘛的,怎么用,啥时候用。
- 1 干嘛的:如果你要对View进行绘制,那么你就要到这里处理
- 2 怎么用:那当然是在这里涂鸦
- 3 啥时候用:代码说明一切
从上述代码我们看到他是在视图将要显示之后和显示之前调用的。
-[DrawLineViewcontroller loadView] -[DrawLineViewcontroller viewDidLoad] -[DrawLineViewcontroller viewWillAppear:] -[DrawLineView drawRect:] -[DrawLineViewcontroller viewDidAppear:]
.
.
.
通常我们需要进行一下的步骤进行绘制。
- 1 获取当前的上下文(这里只能获取一次,并且只能在drawRect方法中获取)
- 2 描述路径、形状(就是处理想要显示的样子)
- 3 把描述好的路径、形状添加早上下文中
- 4 显示上下文内容
.
.
.
1 画线
- 第一步:先创建一个工程
- 第二步:创建一个View的子类,因为要重写drawRect方法
- 第三步:重写DrawRect
- 第四步:先了解一下线段是如何绘制的,额……两个点确定一条直线,这些东西大家都懂,所以我们需要一个起点和一个终点来确定一条直线。
代码如下:
- (void)drawRect:(CGRect)rect {
// Drawing code
NSLog(@"%s",__func__);
//1.获取上下文
CGContextRef contextRef = UIGraphicsGetCurrentContext();
//2.描述路径
UIBezierPath * path = [UIBezierPath bezierPath];
//起点
[path moveToPoint:CGPointMake(10, 10)];
//终点
[path addLineToPoint:CGPointMake(100, 100)];
//设置颜色
[[UIColor whiteColor]setStroke];
//3.添加路径
CGContextAddPath(contextRef, path.CGPath);
//显示路径
CGContextStrokePath(contextRef);
}
额外属性:CGContextSetLineWidth(contextRef, 5); //设置线宽
.
.
.
1 画矩形
- 第一步:先创建一个工程
- 第二步:创建一个View的子类,因为要重写drawRect方法
- 第三步:重写DrawRect
- 第四步:先了解一下矩形是如何绘制的,矩形是由四个边组成,所以我们画四条线段便可以画一个矩形。
方法一:
- (void)drawRect:(CGRect)rect {
// Drawing code
//1.获取上下文
CGContextRef contextRef = UIGraphicsGetCurrentContext();
//2.描述路径
UIBezierPath * path = [UIBezierPath bezierPath];
//起点
[path moveToPoint: