如何在里面设置UIButton的颜色(不是背景颜色)

时间:2011-01-22 04:35:05

标签: uibutton background-color iphone

我正在调整一些视觉变化,并注意到当我尝试设置UIButton的背景颜色时,它只将颜色设置在实际按钮之外(不在按钮本身内)

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

是否存在允许我设置颜色的其他属性?

4 个答案:

答案 0 :(得分:11)

colored UIButton

如果您不想使用图像,并希望它看起来与圆角矩形样式完全相同,请尝试此操作。只需在UIButton上放置UIView,使用相同的框架和自动调整大小的蒙版,将alpha设置为0.3,并将背景设置为颜色。然后使用下面的代码片段从彩色叠加视图中剪切圆角边缘。此外,取消选中UIView上IB中的“User Interaction Enabled”复选框,以允许触摸事件级联到下面的UIButton。

一个副作用是你的文字也会着色。

#import <QuartzCore/QuartzCore.h>

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

答案 1 :(得分: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();
        };

答案 2 :(得分:2)

我刚刚发现了一个完美的解决方案,我不知道为什么。

如果在Interface Builder中选择按钮,并打开“身份检查器”,则可以添加“用户定义的运行时属性”。如果使用颜色类型添加“self.fillColor”键,则该颜色将用作按钮的填充颜色。

我完全是偶然发现的。我有一个名为ColoredButton的UIButton自定义子类,我绘制了圆角矩形并自己填充。它使用了fillColor属性。我将我的一个ColoredButton对象改回UIButton进行测试,并惊讶地发现它仍然充满了颜色。

我不知道它为什么会起作用,但确实如此。

答案 3 :(得分:0)

使用setImage:forState:

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

另外,不要忘记使用[UIButton buttonWithType:UIButtonTypeCustom]

创建按钮