想要在uiview內部繪製一下東西,需要自定義uiview,並且實現uiview的- (void)drawrect:(cgrect)rect方法,為什麼需要實現drawrect:
方法才能繪圖到
view
上,是因為在
drawrect:
方法中才能取得跟
view
相關聯的圖形上下文,
那麼什drawrect:
方法在什麼時候被呼叫呢?
1)當view
第一次顯示到螢幕上(view被加到
uiwindow
上顯示出來)時
2)呼叫
view
的setneedsdisplay
或者setneedsdisplayinrect:
時在view內部繪製圖形大概可分為三個步驟
1)獲取與當前view相關的圖形上下文 cgcontextref ctx = uigraphicsgetcurrentcontext();
2)設定繪圖路徑、繪圖狀態
3)把繪圖資訊渲染到view上(確切的說渲染到view的塗層上) cgcontextstrokepath(ctx); 或者 cgcontextfillpath(ctx);
首先自定義乙個view並且繼承uiview,並實現- (void)drawrect:(cgrect)rect,在該方法中實現繪圖**
- (void)drawrect:(cgrect)rect
具體繪製圖形的**在下面的函式中實現,只要在drawrect:方法呼叫相應繪圖函式即可。
一、畫直線
效果圖/**
* 畫直線
*/void drawline()

二、畫兩條線寬、顏色不同的直線
效果圖/**
* 畫兩條不同狀態的線
*/void drawdiffline()

三、畫虛線
效果圖/**
* 畫虛線
*/void drawdottedline()
, 3個畫素需要列印(列印段的長度),5個畫素不需要列印(不需要列印段的長度)
列印段與不列印段可以設定為多個段, 如:, 2和6為列印段, 4和1為不列印段
count : 一般設定為 lengths 陣列的個數
*/cgcontextref ctx = uigraphicsgetcurrentcontext();
// 第一條虛線
cgcontextmovetopoint(ctx, 20, 20);
cgcontextaddlinetopoint(ctx, 200, 100);
cgcontextsetlinewidth(ctx, 5);
[[uicolor greencolor] set];
cgfloat lengths1 = ;
cgcontextsetlinedash(ctx, 20, lengths1, 2);
cgcontextstrokepath(ctx);
// 第二條虛線
cgcontextmovetopoint(ctx, 20, 40);
cgcontextaddlinetopoint(ctx, 200, 120);
cgcontextsetlinewidth(ctx, 5);
[[uicolor redcolor] set];
cgfloat lengths2 = ;
cgcontextsetlinedash(ctx, 0, lengths2, 2);
cgcontextstrokepath(ctx);
}

四、畫三角形
效果圖/**
* 畫三角形
*/void draw********()

五、畫矩形
效果圖/**
* 畫矩形
*/void draw4rect()

六、畫圓、橢圓
效果圖/**
* 畫圓、橢圓
*/void drawcircle()

七、畫圓弧
效果圖/**
* 畫圓弧
*/void drawarc()

八、畫文字
效果圖/**
* 畫文字
*/void drawtext()

九、畫
效果圖/**
* 畫
*/void drawimage()

十、裁剪
效果圖/**
* 裁剪,(在制定的範圍內繪製圖形,不在該範圍內的無法繪製,不顯示)
*/void drawclip()

Quartz 2D的簡單使用
quartz 2d的簡單使用 使用quartz 2d這個框架可以在uiview畫出我們自己想畫的圖形,而不用使用系統提供的控制項。但是在要實現這個效果要重寫uiview的 void drawrect cgrect rect方法 1.繪製簡單的線段 void drawrect cgrect rect ...
Quartz2D簡單介紹
quartz2d簡單介紹 一 什麼是quartz2d quartz 2d是 個二維繪圖引擎,同時支援ios和mac系統 quartz 2d能完成的工作 繪製圖形 線條 三角形 矩形 圓 弧等 繪製文字 繪製 生成 影象 讀取 生成pdf 截圖 裁剪 自定義ui控制項 二 quartz2d在ios開發...
iOS 使用Quartz 2D畫線
畫虛線需要用到函式 cgcontextsetlinedash 此函式需要四個引數 cgcontextref context uigraphicsgetcurrentcontext cgcontextbeginpath context cgcontextsetlinewidth context,2.0...