2013-04-15 56 views
1

我試過tintColor = [UIColor redColor],它完成了這項工作,但它只顯示按下按鈕時的預期顏色。如何設置UIButtonTypeRoundedRect Button的背景顏色?

Coloration of UIButtons of type UIButtonTypeRoundedRect他們回答同樣的問題,但你需要一個圖像來實現它,有沒有辦法做到沒有圖像?

  • 這裏是我想要的東西:image

  • 這裏是我得到使用圖像:image

記住... 沒有圖像!

+0

@ Balz,檢查我編輯的答案。這應該照顧你的問題。如果您不想使用它,只需移除邊框即可,因此它只會是一種顏色。 –

+0

檢查我的答案中的編輯。 –

回答

1

您可以創建一個方法來生成從UIColorUIImage然後將返回圖像作爲按鈕的背景,例如:

- (UIImage *)imageWithColor:(UIColor *)color { 
    CGRect rect = CGRectMake(0, 0, 1, 1); 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetFillColorWithColor(context, [color CGColor]); 

    CGContextFillRect(context, rect); 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return image; 
} 


UIImage *image = [self imageWithColor:[UIColor colorWithRed:151.0/255.0 
                 green:36.0/255.0 
                 blue:40.0/255.0 
                 alpha:1.0]]; 
[self.button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
[self.button setBackgroundImage:image forState:UIControlStateNormal]; 
self.button.layer.cornerRadius = 6.0; 
self.button.layer.borderWidth = 1.0; 
self.button.layer.borderColor = [UIColor darkGrayColor].CGColor; 
self.button.clipsToBounds = YES; 

使用此我得到

enter image description here

+0

嗨,那產生[this](http://s12.postimg.org/u5d6ipep9/getting.png)...但我需要[this](http://s22.postimg.org/3q0d9s6ap/Expected .PNG)。 – Balz

+0

是的,我看到了,我已經編輯了我的答案,檢查按鈕配置 – tkanzakic

+0

有什麼方法可以爲按鈕的顏色添加垂直漸變?? ...查看此按鈕[按鈕圖像](http:///i.stack.imgur.com/uvNqn.png)...底部有一個較深的紅色,頂部有一個較淡的紅色。 – Balz

2

很好地使用圖像是這樣做的一種方式,但我想你已經明確表示在你的問題中你不想使用圖像。這裏是我創建並以編程方式着色的按鈕。

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
btn.frame = CGRectMake(100, 100, 100,50); 
[btn setTitle:@"Hello" forState:UIControlStateNormal]; 
[btn setBackgroundColor:[UIColor colorWithRed:128.0/255.0f green:0.0/255.0f blue:0.0/255.0f alpha:0.7]]; 
btn.frame = CGRectMake(100.0, 100.0, 120.0, 50.0);//width and height should be same value 
btn.clipsToBounds = YES; 

btn.layer.cornerRadius = 20;//half of the width 
btn.layer.borderColor=[UIColor redColor].CGColor; 
btn.layer.borderWidth=2.0f; 

[self.view addSubview:btn]; 

你可以改變禾任何你想要的[UIColor ColorWithRed:甚至使用[UIColor redColor]或者您想用這個做任何其他事情。

這裏是一個屏幕截圖:

enter image description here

添加背景色的圓形按鈕是不可能的,按鈕的類型更改爲自定義,然後用石英核心來設置一個圓形按鈕。所以將其添加到您的項目中並將其導入到.m中並且它應該可以工作。希望這對你有用。

更改按鈕類似於您顯示更改幀圖像的東西:

btn.frame = CGRectMake(50.0, 100.0, 200.0, 50.0); 

和半徑更改爲:

btn.layer.cornerRadius = 7; 

應該這樣做。

+0

有什麼辦法讓它看起來像[image](http: //i.stack.imgur.com/uvNqn.png)? – Balz

+0

你可以玩角球半徑的大小。減少它直到你達到預期的效果。任何事情都可以用石英芯。只是玩弄它,並從我寫的代碼中製作出你喜歡的東西。 –

0

這裏就是我應該做的:

從Internet下載按鈕圖像或創建自己的形象,使它看起來像你希望它看起來像。 Photoshop可能是你最好的選擇。確保你有一個透明背景並保存爲.png。 然後將其添加到您的xcode項目。製作按鈕:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [btn setBackgroundImage:[UIImage imageNamed:@"yourImage.png"] forState:UIControlStateNormal]; 
    [btn addTarget:self action:@selector(buttonAction) 
     forControlEvents:UIControlEventTouchDown]; 
    [btn setTitle:@"Use it!" forState:UIControlStateNormal]; 
    btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; 
    btn.titleLabel.font = [UIFont systemFontOfSize:20]; 
    btn.frame = CGRectMake(position and size of your button); 
    [self.view addSubview:btn]; 

yourImage。PNG需要用圖像的名稱替換。

buttonAction是您的按鈕在點擊時執行的操作。如果你只是添加:

- (void) buttonAction 
{ 

} 

你的文件中的任何地方,你在這些括號之間添加的任何內容都將被執行。

確保您的按鈕尺寸與您的尺寸CGRect相同,以確保它看起來不會伸展或看起來不像您想要的那樣。

如果您有任何問題,隨時問他們。

希望這對你有幫助