<p id="qitwt"></p>
      1. <object id="qitwt"><strong id="qitwt"></strong></object>
        <p id="qitwt"></p>
        <li id="qitwt"></li>
        <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
        <p id="qitwt"><label id="qitwt"></label></p>
      2. <acronym id="qitwt"></acronym>
        <p id="qitwt"></p>
        免費開源的iOS開發學習平臺

        繪圖CoreGraphics:1-基本概念

        當一個視圖View顯示在屏幕上時,其展現給用戶的樣式都是經過系統繪制后顯示在屏幕上的。例如,UILabel控件能夠在控件所在矩形區域的中間/左側/右側顯示文字,UIImageView可以顯示一張圖片,UIButton可以顯示圖片加文字,這些控件最終展示的效果其實都是經過繪圖后才顯示出來的,而繪圖的過程可以由程序員自行控制。也正因為如此,我們可以去控制繪圖的過程,從而可以使視圖展示不同的效果。這就需要我們去學習CoreGraphics框架。

        Quartz2D

        CoreGraphics中最關鍵的部分是一個名為Quartz 2D的API集合,它包含了各種函數、數據類型以及對象,能夠讓大家在內存中直接繪制視圖和圖像。在使用CoreGraphics框架時,需要提前了解在繪圖過程中涉及的幾個重要概念。

        • 畫布(page):Quartz 2D將正在進行繪制的視圖視作一個虛擬的畫布,在畫布上用畫筆畫畫,就必須遵循一定的規則,例如,繪制的內容是有先后順序的,如下圖所示。

        • 路徑(Path):當你拿到一只畫筆時,那么就能夠隨心所欲的在畫紙上繪畫,畫筆移動的軌跡就是路徑。如下圖所示,一只粉紅色的畫筆繪制了兩個圖形,中間使用藍色進行了填充。在UIKit框架中,有一個稱為貝塞爾路徑(UIBezierPath)的類專門用來設置各種樣式的路徑對象。

        • 繪圖上下文(Graphics Context):繪圖上下文,有時也稱為繪圖環境,繪圖上下文中會保存繪圖的信息和狀態,并負責將圖形繪制在視圖上,即繪圖的輸出終端(Drawing Destination),Quartz提供了5種繪圖的輸出目標,如下圖所示。例如,可以輸出到窗口屏幕window,也可以輸出到打印機printer,也可以保存為文件PDF等。但我們在開發中最經常使用的是layer,后續會詳細介紹。

        繪圖原理

        有關Quartz2D的繪圖原理和我們日常生活中繪圖是一致的。例如,我們拿出一張紙,以及一支筆,那么就可以使用這支筆在紙上畫出各種線條(路徑),線條的樣式,例如:線條的粗細以及顏色,則取決于畫筆;而路徑則取決于繪畫者的意愿。當線條或者圖畫之間有交叉或者覆蓋時,最新繪畫的內容會覆蓋之前的內容。

        使用Quartz2D進行圖形繪制時,通常需要向圖形所在的視圖中添加繪圖代碼。比如創建一個UIView的子類,并向該類的drawRect:方法中添加Quartz函數的調用,重寫系統默認的drawRect方法,相當于在系統原來的繪圖基礎上,再進行新的繪圖。

        注意一個特殊情況:UIImageView的子類不會調用drawRect方法。

        繪圖中經常使用的方法

        在使用CoreGraphics框架對視圖進行繪圖操作時,UIView中如下的幾個方法需要程序員重點關注,這涉及到繪圖的時機。

        • drawRect:方法:當視圖每次需要進行自身重新繪制時都會調用該方法,所以如果在drawRect:方法中插入視圖繪制的代碼,那么這段繪圖代碼就會起效,從而對視圖進行重繪。該方法會被系統自動調用。
        - (void)drawRect:(CGRect)rect;
        
        • setNeedDisplay方法:當手工調用這個方法時,會調用drawRect:方法進行繪圖,但該方法是異步執行的,即不是立即調用drawRect:方法進行繪圖,而是在屏幕每次刷新后才會調用。
        - (void)setNeedsDisplay;
        

        青青草国产成人久久_jizzjizz日本护士高清_亚洲 另类 国产 另类_99久久免费精品色老
        <p id="qitwt"></p>
          1. <object id="qitwt"><strong id="qitwt"></strong></object>
            <p id="qitwt"></p>
            <li id="qitwt"></li>
            <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
            <p id="qitwt"><label id="qitwt"></label></p>
          2. <acronym id="qitwt"></acronym>
            <p id="qitwt"></p>