Quartz2D簡(jiǎn)單介紹

一、什么是Quartz2D

Quartz 2D是?個(gè)二維繪圖引擎,同時(shí)支持iOS和Mac系統(tǒng)

Quartz 2D能完成的工作:

繪制圖形 : 線條\三角形\矩形\圓\弧等

繪制文字

繪制\生成圖片(圖像)

讀取\生成PDF

截圖\裁剪圖片

自定義UI控件

二、Quartz2D在iOS開(kāi)發(fā)中的價(jià)值

為了便于搭建美觀的UI界面,iOS提供了UIKit框架,??有各種各樣的UI控件

UILabel:顯?文字

UIImageView:顯示圖片

UIButton:同時(shí)顯示圖片和?字(能點(diǎn)擊)

利?UIKit框架提供的控件,拼拼湊湊,能搭建和現(xiàn)實(shí)一些簡(jiǎn)單、常見(jiàn)的UI界?

但是,有些UI界面極其復(fù)雜、?且?較個(gè)性化,?普通的UI控件無(wú)法實(shí)現(xiàn),這時(shí)可以利用Quartz2D技術(shù)將控件內(nèi)部的結(jié)構(gòu)畫出來(lái),自定義控件的樣子

其實(shí),iOS中?部分控件的內(nèi)容都是通過(guò)Quartz2D畫出來(lái)的

因此,Quartz2D在iOS開(kāi)發(fā)中很重要的?個(gè)價(jià)值是:自定義view(自定義UI控件)

三、圖形上下文

圖形上下文(Graphics Context):是一個(gè)CGContextRef類型的數(shù)據(jù)

圖形上下文的作用:

(1)保存繪圖信息、繪圖狀態(tài)

(2)決定繪制的輸出目標(biāo)(繪制到什么地?去?) (輸出目標(biāo)可以是PDF?文件、Bitmap或者顯示器的窗口上)

相同的?套繪圖序列,指定不同的Graphics Context,就可將相同的圖像繪制到不同的目標(biāo)上

四、自定義view

如何利用Quartz2D?定義view?(?定義UI控件)

如何利用Quartz2D繪制東西到view上?

首先,得有圖形上下文,因?yàn)樗鼙4胬L圖信息,并且決定著繪制到什么地方去

其次,那個(gè)圖形上下?必須跟view相關(guān)聯(lián),才能將內(nèi)容繪制到view上面

?定義view的步驟:

(1)新建?個(gè)類,繼承自UIView

(2)實(shí)現(xiàn)-(void)drawRect:(CGRect)rect?法.然后在這個(gè)?方法中 :

1)取得跟當(dāng)前view相關(guān)聯(lián)的圖形上下文;

2)繪制相應(yīng)的圖形內(nèi)容

3)利用圖形上下文將繪制的所有內(nèi)容渲染顯示到view上面

五、補(bǔ)充說(shuō)明

1.drawRect:

(1)為什么要實(shí)現(xiàn)drawRect:?法才能繪圖到view上?

因?yàn)樵赿rawRect:?法中才能取得跟view相關(guān)聯(lián)的圖形上下文

(2)drawRect:?法在什么時(shí)候被調(diào)用?

當(dāng)view第一次顯示到屏幕上時(shí)(被加到UIWindow上顯示出來(lái))

調(diào)用view的setNeedsDisplay或者setNeedsDisplayInRect:時(shí)

2.Quartz2D須知

Quartz2D的API是純C語(yǔ)?言的

Quartz2D的API來(lái)自于Core Graphics框架

數(shù)據(jù)類型和函數(shù)基本都以CG作為前綴

CGContextRef

CGPathRef

CGContextStrokePath(ctx);

3.drawRect:中取得的上下?文

在drawRect:方法中取得上下文后,就可以繪制東西到view上

View內(nèi)部有個(gè)layer(圖層)屬性,drawRect:方法中取得的是一個(gè)Layer Graphics Context,因此,繪制的東西其實(shí)是繪制到view的layer上去了

View之所以能顯示東西,完全是因?yàn)樗鼉?nèi)部的layer

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • CoreGraphics—Quartz2D簡(jiǎn)單介紹 一、什么是Quartz2D Quartz 2D是一個(gè)二維繪圖引...
    anyurchao閱讀 117評(píng)論 0 0
  • Quartz2D以及drawRect的重繪機(jī)制字?jǐn)?shù)1487 閱讀21 評(píng)論1 喜歡1一、什么是Quartz2D Q...
    PurpleWind閱讀 916評(píng)論 0 3
  • --繪圖與濾鏡全面解析 概述 在iOS中可以很容易的開(kāi)發(fā)出絢麗的界面效果,一方面得益于成功系統(tǒng)的設(shè)計(jì),另一方面得益...
    韓七夏閱讀 2,975評(píng)論 2 10
  • Quartz2D 簡(jiǎn)介 Quartz2D是二維(平面)的繪圖引擎(經(jīng)包裝的函數(shù)庫(kù),方便開(kāi)發(fā)者使用。也就是說(shuō)蘋果幫我...
    iOS_Cqlee閱讀 675評(píng)論 0 2
  • 競(jìng)技體育真是個(gè)神奇的東西,總能讓人熱血沸騰甚至熱淚盈眶。奮力拼搏的精神特別容易感染人,讓人也莫名其妙地產(chǎn)生一種身同...
    PEIPEIEEE閱讀 594評(píng)論 2 3

友情鏈接更多精彩內(nèi)容