2012-03-29 92 views
0

我需要在我的iPhone應用程序中有幾個按鈕(可能會將它移植到iPad上)。我知道至少有兩種製作這種按鈕的方法: 1.使用通常的UIButton和圖像作爲背景,可以在任何圖形編輯器中繪製。 2.繼承UIButton並使用CoreGraphics工具實現自己的drawRect:方法。什麼是繪製自定義按鈕的更好方法?

我不知道爲什麼,但我傾向於使用第二個,因爲它似乎更困難和更低的表現。

我是否正確地認爲,以編程方式實現按鈕繪圖時,它變成了「跨平臺」,因此不需要針對不同分辨率的多個圖標?

如果這真的很簡單的圖標,一些貝塞爾曲線或圓形填充顏色。它仍會比圖像按鈕更慢嗎?

是否有人知道任何具有繪製矢量圖像的圖形界面的工具,並將其轉換爲可粘貼到drawRect:方法的CoreGraphics代碼?

謝謝。

+1

看一看:http://itunes.apple.com/gb/app/paintcode/id507897570 – hypercrypt 2012-03-29 22:16:28

+0

哦!這看起來很棒。非常感謝這個鏈接。你也使用這個程序嗎? – BartoNaz 2012-03-29 22:23:43

+0

我已經使用了試用版(在網站上,通過應用程序商店鏈接),並在我有了這筆錢後就可以購買。 – hypercrypt 2012-03-29 22:27:21

回答

1

不用擔心使用drawRect。與Windows不同,iOS會將結果緩存到位圖中,並且只會在視圖的維度發生變化時重新繪製(這是您真正想要的 - 因爲您想再次縮放它)。

至於矢量應用程序,你可以使用不透明度。它可以將圖標導出到CoreGraphics源代碼中:http://likethought.com/opacity/

+0

感謝您的鏈接。這是否意味着如果按鈕使用背景圖片,它會更頻繁地重繪圖片?或者只是在開始處有所不同:CG按鈕是從代碼中獲取的,並且圖像按鈕是從文件中讀取的,但是之後如果沒有對按鈕的尺寸進行更改,則它們的行爲方式相同:只是從位圖緩存? – BartoNaz 2012-03-30 09:12:28

+1

正確。 UIView將在兩種情況下重繪:顯式調用setNeedsDisplay或調整大小時,以及contentMode = UIViewContentModeRedraw。重要的是要注意,調整UIView不會生成對drawRect的調用,除非通過調用setNeedsRedraw或在contentMode = UIViewContentModeRedraw時調用。對於任何其他情況,操作系統將根據當前contentMode簡單縮放CACHED位圖。 – 2012-03-30 15:07:05

相關問題