2011-01-22 148 views
7

我調整了一些視覺上的變化,並注意到,當我嘗試設置一個UIButton的背景顏色,只將實際按鈕以外的顏色(裏面沒有按鈕本身)如何設置一個UIButton的顏色內(沒有背景色)

UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(6, 9, 50, 25);  
[button setTitle:@"Select" forState:UIControlStateNormal]; 
button.backgroundColor = [UIColor redColor]; 

是否有另一個屬性可以讓我設置顏色?

回答

0

使用setImage:forState:

- (void)setImage:(UIImage *)image forState:(UIControlState)state 

另外,不要忘記與[UIButton buttonWithType:UIButtonTypeCustom]

+0

所以我必須用一個形象瓦特/這種做法?我怎麼會在這裏得到一個單一的顏色? – 2011-01-22 05:07:09

+0

是的,你需要的圖像。你可以沒有圖像,但按鈕將有方形的角落。所以方形的核心人物,充滿了顏色和頭銜。沒有其他的。要做到這一點:創建按鈕UIButtonTypeCustom並設置其backgroundColor屬性到任何顏色需要 – tux91 2011-01-22 05:12:38

+4

垃圾的答案... – yunas 2012-03-11 20:02:59

11

colored UIButton

如果你不想使用圖片創建按鈕,並希望它看起來酷似Rounded Rect風格,試試這個。只需在UIButton上放置一個UIView,使用相同的幀和自動調整大小掩碼,將alpha設置爲0.3,並將背景設置爲一種顏色。然後使用下面的代碼片段將彩色覆蓋視圖中的圓形邊緣剪下。此外,取消對在UIView的IB「用戶交互啓用」複選框,使觸摸事件向下下方級聯到UIButton的。

一個副作用是,你的文字也將進行着色。

#import <QuartzCore/QuartzCore.h> 

colorizeOverlayView.layer.cornerRadius = 10.0f; 
colorizeOverlayView.layer.masksToBounds = YES; 
2

我剛剛發現了一個完美的解決方案,我不知道爲什麼。

如果選擇在Interface Builder按鈕,打開「身份檢查」,你可以添加「用戶自定義屬性運行」。如果使用某種顏色添加「self.fillColor」鍵,則該顏色將用作該按鈕的填充顏色。

我偶然發現純屬本。我有一個名爲ColoredButton的UIButton的自定義子類,我繪製了圓角矩形並自己填充。它使用了一個fillColor屬性。我將其中一個ColoredButton對象改回到UIButton來測試一些東西,並且驚訝地發現它仍然充滿了顏色。

我不知道爲什麼它的工作原理,但它確實。

3

對於Xamarin

var addNote = new UIButton(UIButtonType.Custom); 
     //addNote.SetImage(new UIImage("Images/11-x.png"), UIControlState.Normal); 
     addNote.SetTitle("Add Note", UIControlState.Normal); 
     addNote.Frame = new RectangleF(0, 0, 130, 30); 
     addNote.SetTitleColor(UIColor.Blue, UIControlState.Normal); 
     addNote.BackgroundColor = UIColor.LightGray; 
     addNote.Layer.CornerRadius = 10f; 
     addNote.Layer.BorderColor = new MonoTouch.CoreGraphics.CGColor(0f, 100f, 0f); 
     addNote.Layer.BorderWidth = 2f; 
     addNote.TouchUpInside += delegate 
     { 
      AddNote(); 
     };