2013-10-09 43 views
0

我想創建一個像UIButton的自定義形狀。我需要它發送touchUpInside到像一個按鈕的目標,但是我想使用drawRect來改變按鈕的狀態時,按鈕狀態的變化。使用自定義drawRect代碼創建UIButton LIKE控件

我讀過很多互相沖突的東西,關於沒有繼承UIButtonUIControl

  1. 那麼這是什麼方法可以接受?

  2. 此外,如果答案是UIControl那麼您如何使用'beginTracking'方法實現touchUpInside

  3. 爲什麼我們不能繼承UIButton。我已經讀過關於它的一些事情,因爲它不起作用,但爲什麼會這樣呢?

我希望有人可以對此有所瞭解,或者指點我一些很好的閱讀。

謝謝。

+0

看看是否有幫助http://stackoverflow.com/questions/3679239/making-a-custom-button-using-a-uiview-or-overriding-uibutton – msk

+0

在閱讀討論/論點後,米仍然有點困惑。如果它的子類UIButton安全,爲什麼你不得不使用IB來改變它的類型?似乎有點黑客。你怎麼看? –

+0

期待[Apple文檔中的此處]提及的原因(https://developer.apple.com/library/ios/documentation/uikit/reference/UIControl_Class/Reference/Reference.html#//apple_ref/occ/cl/UIControl)我不認爲繼承UIButton是個好主意。考慮繼承UIView或使用自定義的UIButton類型。 – msk

回答

1

當我想要自定義按鈕時,我遇到了同樣的問題。我也看過很多帖子,似乎並沒有以正確的方式攻擊UIButton。在你的情況下,我會建議繼承UIButton並覆蓋setHighlighted:方法來調整選擇按鈕。我有一個UIButton的子類,名爲LDGradientButton,可以在lightdesign/LDGradientButton找到。隨意看看圖紙代碼。在我的情況下,我使用的是CALayers,但如果我正在完成,我可能會使用CoreGraphics