iOS的绘图方法使用和参数的说明

来源:互联网 发布:twrp备份文件提取数据 编辑:程序博客网 时间:2024/06/06 00:04

前言

今天在给一个UIView添加背景图片的时候,其实完全可以用图片直接怼,简单方便便捷,我也喜欢这么弄,但是我想到时间还很充裕(就是UI那家伙没有给我图片,只能自己画),能不能使用系统的API画一个需要的图片呢,于是就查看了相关的资料,自己整理了一下。

iOS的的系统提供的有两套框架

1.UIBezierPath(贝赛尔曲线)

贝塞尔曲线其实就是Core Graphics的封装,用起来更加的顺手罢了,更容易理解含义

/**从rect的参数的类型根据矩形画线*/+ (instancetype)bezierPathWithRect:(CGRect)rect;
/**    Oval(椭圆)内切矩形的正式椭圆 也可以是圆 前提rect的size的width和height相等*/+ (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
/**    cornerRadius半径  矩形四个角圆弧画线*/+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius; 
/**    corners  某一个角画弧画线    typedef NS_OPTIONS(NSUInteger, UIRectCorner) {    UIRectCornerTopLeft     = 1 << 0,    UIRectCornerTopRight    = 1 << 1,    UIRectCornerBottomLeft  = 1 << 2,    UIRectCornerBottomRight = 1 << 3,    UIRectCornerAllCorners  = ~0UL};*/+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;
/**    center 圆心坐标    radius 圆半径    startAngle 起始的弧度 当为零的时候,证明是从最右边开始的    系统自带了有弧度(M_PI表示半圆,M_PI_2就表示四分之一的圆)    endAngle 结束的弧度    clockwise 逆时针(NO) 还是顺时针(yes)*/+ (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
/**    CGPathRef 一个路径信息的结构体(很少用到)*/typedef const struct CGPath *CGPathRef;+ (instancetype)bezierPathWithCGPath:(CGPathRef)CGPath;

上面都是静态方法直接画线,那必然有实例方法来画线

/**    利用一个坐标指定画图的初始坐标*/- (void)moveToPoint:(CGPoint)point
/**    下一个坐标与上一个坐标连在一起(必须有初始坐标 moveToPoint这个函数要先设置)*/- (void)addLineToPoint:(CGPoint)point;
/**    这个是三次的贝塞尔曲线 可以画出两个弧来    endPoint  终点坐标     controlPoint1 第一个基准点     controlPoint2 第二个基准点*/- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2;
/**    这个是二次的贝塞尔曲线 可以画出一个弧来    endPoint  终点坐标     controlPoint1 第一个基准点 */- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint;
/**    center 圆心坐标    radius 圆半径    startAngle 起始的弧度 当为零的时候,证明是从最右边开始的    系统自带了有弧度(M_PI表示半圆,M_PI_2就表示四分之一的圆)    endAngle 结束的弧度    clockwise 逆时针(NO) 还是顺时针(yes)*/- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise NS_AVAILABLE_IOS(4_0);

2.Core Graphics

这是一个基于C封装的底层的API的接口,由于更底层的,所以它的功能更强大,很多时候我们愿意使用他们。
这里写图片描述

这是一个获取一个带三角的圆角的uiimage的对象
// 上下文的就是相当于画板,就是布置画线所需要的环境
1.UIGraphicsBeginImageContextWithOptions(size, NO, 0) 第一个方法就是设置图片的上下文
2.UIGraphicsGetCurrentContext() 获取当前上下文的
3. CGContextMoveToPoint 设置画图的起始坐标
4. CGContextAddLineToPoint 添加画图的坐标 连接上一个坐标
5. CGContextAddArc(contextRef, FONTW(13), FONTW(7.5), FONTW(7.5), M_PI, M_PI*1.5, 0); 画弧
6. CGContextClosePath(contextRef); 连接路径
7. [color setFill]; 画面的填充的颜色
8. UIGraphicsGetImageFromCurrentImageContext 获取当前的画板的图片的对象
9. UIGraphicsEndImageContext 结束图片的上下文本 恢复以前的环境

效果图如下这里写图片描述

带三角的边框就是 其他的以后再介绍