2009-10-25 156 views
3

我有一個圖像是480x331,並有一個透明的背景。透明部分就在圖像邊緣附近。我的UIButton是72x37。當我在IB中將圖像設置爲背景圖像時,圖像的透明邊緣在按鈕中顯示爲白色。沒有圖像,按鈕是白色的圓角。我猜這是我看到的白色。如果是這樣,這意味着圖像透明度正在工作,但按鈕的白色區域正在顯示。圖像和背景圖像的UIButton

如果我將圖像設置爲UIButton的Image屬性,即使在更改視圖模式之後,它仍然無法正確縮放,並保持其全尺寸。

任何建議,我應該使用哪些屬性來擴展和透明度的工作權利?

回答

7

你正在使用什麼按鈕類型?

通過它的聲音,你可能使用UIButtonTypeRoundedRect風格,但UIButtonTypeCustom可能更合適。您可以在Interface Builder的檢查器窗口中更改它。

6

@Christopher Fairbaim建議使用UIButtonTypeCustom。使用UIButtonTypeRoundedRect將爲您提供透明區域中的白色背景。

但是,在Interface Builder中進行接線有其侷限性。如果您想從數據集或基於用戶輸入動態生成UIViews,UIButtons和資產,可以通過編程方式進行操作。

創建的按鈕:(注:這也將與其他UIButtonTypes工作,但我用UIButtonTypeCustom這個特定透明度的例子。)

UIButton *btnName = [UIButton buttonWithType:UIButtonTypeCustom]; 

要更改所需的屬性:

btnName.backgroundColor = [UIColor clearColor]; 
btnName.frame = CGRectMake(100, 100, 72, 37); //(X coord, Y coord, width, height) 
[btnName addTarget:myActionClassName action:@selector(myActionName) forControlEvents:UIControlEventTouchUpInside]; 

要爲各種狀態添加圖像(假設這些都是透明的PNG的):

UIImage *btnNameImageNormal = [UIImage imageNamed:@"btnNameNormal.png"]; 
[btnName setBackgroundImage:btnMenuImageNormal forState:UIControlStateNormal]; 
UIImage *btnNameImagePressed = [UIImage imageNamed:@"btnNamePressed.png"]; 
[btnName setBackgroundImage:btnNameImagePressed forState:UIControlStateHighlighted]; 

要將按鈕添加到圖(從的viewController類中):

[self addSubview:btnName]; 

(赦免任何錯別字,因爲我複製並從我的一個項目粘貼,並試圖推廣的命名。)