我想給一些iPhone UIButton添加3D或有光澤的外觀,但是不使用PNG或可伸縮圖像。我有很多不同形狀和大小的按鈕,其中有很多顏色是隨時產生的,所以在我的情況下,預渲染圖像是不可行的。如何以編程方式向UIButton提供光面外觀?
你會如何去繪製這些按鈕的光澤程式化?
我想給一些iPhone UIButton添加3D或有光澤的外觀,但是不使用PNG或可伸縮圖像。我有很多不同形狀和大小的按鈕,其中有很多顏色是隨時產生的,所以在我的情況下,預渲染圖像是不可行的。如何以編程方式向UIButton提供光面外觀?
你會如何去繪製這些按鈕的光澤程式化?
在this answer,我提供一些用於在UIView上繪製光澤梯度的代碼,但對同一問題的Mirko's answer則顯示了執行此操作的更高性能的方法。
我創建了一個更精細的三維按鈕樣式,以光澤和陰影作爲我的課程的示例。該3D按鈕的代碼是可以下載的包的一部分here(查找MATCGlossyButton UIButton子類)。我在我的iPhone開發課程的春季學期iTunes U上描述了這個元素在Quartz 2D類的視頻中的繪製。
以編程方式執行此操作的一種方法是修改UIButton
圖層的屬性。例如,您可以添加的CAGradientLayer
實例作爲子層,設置圖層的圓角半徑,修改它的邊界,等等馬特龍已經寫了這個偉大的文章:
http://www.cimgf.com/2010/01/28/fun-with-uibuttons-and-core-animation-layers/
UIButton *button1 = [[UIButton alloc] initWithFrame:CGRectMake(10, 10, 200, 40)];
button1.backgroundColor = [UIColor blackColor];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = button1.bounds;
gradient.colors = [NSArray arrayWithObjects: (id)[[UIColor grayColor] CGColor],(id)[[UIColor blackColor] CGColor], nil];
[button1.layer insertSublayer:gradient atIndex:0];
這樣做的一些解釋會很好。 – 2012-11-29 14:28:34