2014-09-02 40 views
1

所以我試圖讓按鈕的邊框在按下時改變顏色,我發現一些問題。這是我有:iOS 7 colorWithAlphaComponent錯誤

UIColor *blackColor; 
UIColor *transBlack = [blackColor colorWithAlphaComponent:05f]; 
self.layer.borderColor = [UIColor transBlack].CGColor; 

現在最後一行是給我的讀取「沒有已知的類方法的選擇‘transBlack’」錯誤「屬性‘CGColor’不是類型的對象中找到'id'「我不知道這些是什麼意思。我想讓最後一行工作,如果你可以向我解釋爲什麼編譯器抱怨這會非常有幫助。

任何和所有的幫助將不勝感激。

編輯: 所以我試圖用不同的方法

colorWithHue:0 saturation:0 brightness: 0 alpha: 0.5 

這似乎已經打破我的按鈕的推動出口。我不確定爲什麼。

EDIT2:

這似乎正確使用colorWithAlphaComponent

UIColor *transBlack = [[UIColor blackColor] colorWithAlphaComponent:0.5f]; 
self.layer.borderColor = transBlack.CGColor; 

的更多信息,請查看所選答案原來的問題。

+0

所以我用「colorWithHue」,而不是這似乎給我,我一直在尋找的效果。出於某種原因使用'colorWithAlphaComponent'使我的按鈕無法點擊。 – CGTheLegend 2014-09-02 21:57:24

+0

是自己的UIButton? – Ron 2014-09-02 22:05:44

+0

是的,這是一個擴展UIButton的自定義按鈕類。 – CGTheLegend 2014-09-02 22:13:21

回答

5

我可以看到兩個問題。首先,你正在創建一個變量「blackColor」,但沒有分配任何東西(因此它將爲零)。我想你的意思是調用UIColor上的類方法blackColor(分配並初始化一個UIColor實例)。第二個問題是[UIColor transBlack]。 UIColor上沒有選擇器叫做transBlack。你剛剛創建了一個叫做transBlack的變量,它恰好是UIColor的一個實例......所以直接從transBlack獲取CGColor即可。

事情是這樣的:

UIColor *transBlack = [[UIColor blackColor] colorWithAlphaComponent:0.5f]; 
self.layer.borderColor = transBlack.CGColor; 
+2

'colorWithAlphaComponent:0.5f'更合適,是嗎? – Thompson 2014-09-02 22:06:18

+1

哎呀,謝謝!修正了我的答案。 – Ron 2014-09-02 22:08:13

+0

是的!但我認爲你的意思是「0.5」而不是5.0。 0.5給了它一半的alpha。 – CGTheLegend 2014-09-02 22:10:27