簡體   English   中英

帶有漸變圖層的UIButton不突出顯示

[英]UIButton with a gradient layer not highlighting

創建了一個帶有漸變圖層的按鈕:

//MyGradient creates and returns gradient layers
CAGradientLayer *gradient = [MyGradient blueGradient];

//MyButton is a subclassed UIButton which adds some attributes
MyButton *testButton = [MyButton buttonWithType:UIButtonTypeCustom];
testButton.frame = CGRectMake(10, 10, 150, 50);
[testButton addTarget:self action:@selector(testButton:) forControlEvents:UIControlEventTouchUpInside];

[gradient setFrame:testButton.bounds];

testButton.clipsToBounds = YES;
[testButton.layer insertSublayer:gradient atIndex:0];    

[self.view addSubview:testButton];

按下時如何使圖像突出顯示? 我發現了幾個示例代碼,這些代碼繼承了UIButton並重寫了drawRect:方法。 有沒有更簡單的方法來使按鈕突出顯示?

您的按鈕沒有圖像-因此沒有要突出顯示的內容。

設置一個圖像(如果需要,可以使用漸變圖像)作為按鈕的背景...即使不為UIControlStateHighlighted設置圖像,該按鈕也將“突出顯示”-基本上,iOS會反轉顏色。

另外,如果只需要水平/垂直漸變,則可能需要使用以下功能: resizableImageWithCapInsets

玩得開心 !

沒有內置的方法可以做到這一點。 重載UIButton並根據按鈕的狀態自己在drawRect繪制漸變,或者為兩個狀態創建2個漸變圖像,並使用setBackgroundImage:image forState:UIControlStateNormal / UIControlStateHighlighted

最簡單的方法是將漸變放入圖像文件(最好是可調整大小),並使用以下代碼:

[testButton setImage:normalStateImage forState:UIControlStateNormal];
[testButton setImage:highlightStateImage forState:UIControlStateHighlighted];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM