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

前言

今天在给一个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 结束图片的上下文本 恢复以前的环境

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章