2013-01-19 57 views
1

在這裏,我處於一種情況,我需要添加三個圖像來製作一個按鈕。我可以將三張圖片合併爲單張圖片作爲背景圖片嗎?

我們有三個部分的圖像左桅杆部分,中間部分和右端部分。

圖像的左半部分 - 圖像>Middle part of the button.右側部分 - - 圖像>Left part of the button.中間部分>Right part of the button.

由於在中間,即該按鈕的標題文本從按鈕變化到按鈕我不想每次都創建不同尺寸的單獨圖像。我認爲應該有一種方法來合併這些按鈕來製作一個完整的按鈕,具體取決於提供的按鈕的寬度。

enter image description here

當一切完成後,完整的按鈕應該是這個樣子。

我希望你得到我需要的東西。請提出一些解決方案。

+0

是ofcourse您可以在畫布上繪製這些圖像和圖像分配給您的UIButton背景。 –

+0

@lakesh老兄我打算根據按鈕的寬度以編程方式合併它們。 –

回答

1

要做到這一點,你使用可拉伸的圖像。

您製作的圖像將是包含左側部分,中間部分和右側部分的單個圖像。

中間部分只需要一個像素寬。 (想象一下,你的按鈕將會是什麼樣的兩端之間只有一個狹小的空間,這就是你的形象。

然後您使用此代碼...

UIImage *image = [UIImage imageNamed:@"MyImage"]; 

UIImage *stretchableImage = [image stretchableImageWithLeftCapWidth:10 topCapHeight:0]; 

[myButton setBackgroundImage:stretchableImage forState:UIControlStateNormal]; 

這一操作將採取狹隘的圖像,並採取在你的帽寬度之後(即在這個例子中爲10)的像素,並且它將重複該單個像素所需的次數以獲得按鈕的全部寬度

然後,無論多麼小或大的按鈕。

-1

您可以使用按鈕標題標籤設置文本,同時保持背景圖像的通用性。

例如: - 適用

 [btn setTitle:@"something" forState:UIControlStateNormal]; 
     [btn setTitle:@"something" forState:UIControlStateHighlighted]; 
     [btn setTitle:@"something" forState:UIControlStateDisabled]; 
     [btn setTitle:@"something" forState:UIControlStateSelected]; 

可以使用 setImage設置圖像按鈕:forState方法或setBackgrounImage:forState

例如: -
btnImage = [UIImage的imageNamed:@「圖像.PNG「]; [btnTwo setImage:btnImage forState:UIControlStateNormal]; //或設置爲背景圖像

 [btnTwo setBackgroundImage:[UIImage imageNamed:@"name.png"] forState:UIControlStateNormal]; 

可以使用在所述圖像中的,通過使用的UIButton的字體屬性時使用的不同的字體

例如: - btn.titleLabel.font = [UIFont systemFontOfSize:尺寸];

//OR 

您還可以使用像這樣的設置字體大小和字體樣式。它比你的要求,但嘿,到底是什麼......

 [btn.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]]; 

而且......如果你感覺活潑的可用字體列表可以實現此代碼,然後檢查發現多一點xCode調試器中的輸出。

代碼:

 NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]]; 
     NSArray *fontNames; 
     NSInteger indFamily, indFont; 
     for (indFamily=0; indFamily<[familyNames count]; ++indFamily) 
     { 
     NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]); 
     fontNames = [[NSArray alloc] initWithArray: 
     [UIFont fontNamesForFamilyName: 
     [familyNames objectAtIndex:indFamily]]]; 
     for (indFont=0; indFont<[fontNames count]; ++indFont) 
     { 
     NSLog(@" Font name: %@", [fontNames objectAtIndex:indFont]); 
     } 
     } 
+0

只需設置一個像這樣的圖像將其拉伸到正確的大小,但任何圓角將被拉伸扭曲。做他所要求的最好方法是使用可拉伸的圖像。 – Fogmeister

+0

@Fogmeister:我同意你的觀點,如果按鈕尺寸很大,圖片會變得很緊張。但是當處理大小不一的按鈕時,他可以使用setBackgroundImage:並且工作正常。 –

+0

仍然沒有。如果圖像上的圓角的圓角半徑爲8,那麼如果該按鈕的寬度是圖像寬度的兩倍,則會出現扭曲的角落,垂直方向8個,水平方向16個。它看起來很可怕。如果圖像較小,則會發生這種情況。你可以做到這一點,但爲什麼?使用適當的可伸縮圖像方法非常簡單,它可以阻止UI看起來不好。 – Fogmeister

相關問題