2013-04-18 49 views
0

我正在實現UIButton的複選框子類。有2張背景圖片(開/關)和4種概念性狀態:爲突出顯示的狀態設置背景圖像會刪除自動突出顯示

  • on - /不突出
  • off使圖像 - 關閉圖像/不突出
  • on & pressed - 使圖像/高亮
  • off & pressed - 關閉圖像/高亮

如果我設置背景圖片僅用於接通和斷開(UIControlStateNormalUIControlStateSelected),該按鈕在被保持時突出顯示。

然而,當on & pressed,它使用過的圖像(如預期的,因爲該狀態是UIControlStateSelected | UIControlStateHighlighted,所以它使用正常狀態下的圖像)

所以我設置背景圖片爲UIControlStateSelected | UIControlStateHighlighted是使圖像,但現在程序亮點被禁用 - 我假設,因爲如果你爲該狀態設置了特定的背景圖像,邏輯是你可能想覆蓋突出顯示。

我不想使用第三個圖像,是否可以爲UIControlStateSelected | UIControlStateHighlighted設置背景圖像,並且仍然可以應用程序高亮顯示?

設置背景圖像後,我已經呼叫[self setAdjustsImageWhenHighlighted:YES];

回答

0

我想你使用的是一個UIButton,其類型不是「custom」,而是例如「 「圓角」。在這種情況下,設置背景圖像可能會產生意想不到的副作用,請參閱我的earlier question
我建議將按鈕類型更改爲「自定義」。那麼當然你必須自己定義所有屬性。

+0

我不知道是否/如何在類中設置按鈕類型,但我使用它的方式是在IB中添加一個UIButton,將它設置爲'Custom'類型,並將其設置爲類'MyCheckBoxClass'。該類直接來自UIButton。更新:在類的initWithCoder(我設置圖像)中,類型是'UIButtonTypeCustom' – Turch