我正在调整一些视觉变化,并注意到当我尝试设置UIButton的背景颜色时,它只将颜色设置在实际按钮之外(不在按钮本身内)
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(6, 9, 50, 25);
[button setTitle:@"Select" forState:UIControlStateNormal];
button.backgroundColor = [UIColor redColor];
是否存在允许我设置颜色的其他属性?
答案 0 :(得分:11)
如果您不想使用图像,并希望它看起来与圆角矩形样式完全相同,请尝试此操作。只需在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]