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 結束圖片的上下文本 恢復以前的環境

效果圖如下這裏寫圖片描述

帶三角的邊框就是 其他的以後再介紹

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