【我們都愛Paul Hegarty】斯坦福IOS8公開課個人筆記13 Drawing繪製、UIColor顏色、Fonts字型

來源:互聯網
上載者:User

標籤:ios8   swift   drawing繪製   fonts字型   alpha透明度   

上一話介紹了視圖繪製的一些基本原理,這一話繼續展開。UIBezierPath可以繪製許多有趣的圖形。


使用不同的構造器,比如roundedRect就是四個角被磨圓了的矩形,或者乾脆是橢圓和圓。你甚至可以剪下任意的path,剪下使用addClip方法,在剪下了之後你可以針對剪下的這部分進行操作,例如你正在繪製一個卡片,這個卡片有小小的圓角效果,你可以把卡片繪製在一個矩形裡面,然後把它剪下到一個小一點的圓角矩陣裡,這樣四角就修圓了。這是一個獲得圓角卡片最簡單的方法。

你也可以進行碰撞檢測,它基於繞圈規則。

現在來聊聊顏色的問題。


你可以使用系統給出的標準顏色,比如紅色、綠色,也可以自己調色,另外可以把你的顏色設定為一種模式,這樣你使用顏色的時候其實是使用了一種圖形,這個很酷。。

你可以給視圖設定背景顏色,顏色也可以有透明度,透明度(Alpha)使用範圍0-1.0代表完全透明,1代表完全不透明。你可以使用方法colorWithAlphaComponent來建立一個半透明的顏色。

如果你在繪製的時候用到了透明度,那麼你需要告訴系統,把UIView的opaque屬性設定為false。為什麼這麼做呢?因為帶透明度的繪製是非常昂貴的,因為你後面的view會被展示出來,所以系統必須把重疊的視圖混合起來繪製,這在影像處理能力上非常昂貴。所以如果不是很有必要不要這麼做,如果你在繪製的時候沒有把這個屬性設定為false,那麼你進形半透明繪製將不會成功。

你可以把整個視圖都設定成半透明的,因為它自己就有alpha屬性。


當帶有透明度的視圖相互疊加會發生什嗎?它們會發生混合,子視圖數組中的第一個子視圖會出現在最後面,剩下的子視圖按照順序出現在前面。你可以完全隱藏一個視圖,只需要設定它的hidden屬性,這種隱藏視圖的做法非常普遍,當某個條件達成時再出現在螢幕上。隱藏的視圖不僅不會被繪製,也不會接受任何觸控事件,但是它依舊存在於視圖的層級關係中,就好像等在那裡一樣。


通常我們用UILabel在螢幕上繪製文本,如果你想要在你的drawRect上繪製,你用NSAttributedString來完成這個工作,它有很多屬性可以被設定


這些屬性是字典格式的,它的範圍是NSRange格式,不是Range格式,這是古老的格式。

下面來討論一下字型(Fonts)


字型從IOS7開始,包括IOS8。正確使用非常重要,它們是建立漂亮UI的關鍵。


那麼如何做到字型漂亮呢,我們使用preferredFontForTextStyle,字型樣式是類似標題或者本文,就好像我們用word一樣,IOS中也可以設定字型的格式,它有一些準備好的格式。用推薦的自己總是好的,它包含了格式和大小,你可以改變它的大小。當然你也可以自己建立一個字型。

也有一些系統預設的字型,比如按鈕或者段控制器上的字型,你不會總用預設的吧?用系統推薦的是個更好的方案。

那麼如何顯示映像呢?我們有個專門顯示圖片的UIImageView,但是你可能希望把你的圖片丟到drawRect裡。


一般來說你會以名字來建立一個圖片,以便從Images.xcassets裡面拿出來。


一旦你有了這個圖片,你可以發送一個訊息去顯示它,這個方法是drawAtPoint,然後系統就會把正常尺寸的圖片的左上方放到這個點上。

你也可以用drawInRect這個方法,它會縮放映像在這個長方形地區中。

或者像我們之前說的那樣用drawAsPatternInRect,它會平鋪直到鋪滿這個地區。


那麼當你的邊界發生變化怎麼辦,比如你旋轉了手機,由高瘦變成了矮胖,你可能希望再調用一次drawRect,但是這是做不到的,你的映像會被拉扁,所以一般來說得不到你想要額結果。但是這是預設的做法,展開映像以獲得更好的效能。你可以自己來控制邊界改變時的處理對策。使用視圖中的contentMode就能做到。一種策略是不改變圖片,只是讓你的圖片移動到新邊界的各個方向而已。

另外一些做法是以原映像的寬高比例來縮放圖片。

你也可以用你最想用的Redraw。

【我們都愛Paul Hegarty】斯坦福IOS8公開課個人筆記13 Drawing繪製、UIColor顏色、Fonts字型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.