这把我难倒了。
有没有可能在iPhone的Cocoa中更改UIButton的背景颜色?我试过设置背景颜色,但它只改变了边角。对于这样的事情,setBackgroundColor:
似乎是唯一可用的方法。
[random setBackgroundColor:[UIColor blueColor]];
[random.titleLabel setBackgroundColor:[UIColor blueColor]];
发布于 2012-02-17 19:53:09
我有一个不同的方法,
[btFind setTitle:NSLocalizedString(@"Find", @"") forState:UIControlStateNormal];
[btFind setBackgroundImage:[CommonUIUtility imageFromColor:[UIColor cyanColor]]
forState:UIControlStateNormal];
btFind.layer.cornerRadius = 8.0;
btFind.layer.masksToBounds = YES;
btFind.layer.borderColor = [UIColor lightGrayColor].CGColor;
btFind.layer.borderWidth = 1;
来自CommonUIUtility,
+ (UIImage *) imageFromColor:(UIColor *)color {
CGRect rect = CGRectMake(0, 0, 1, 1);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
// [[UIColor colorWithRed:222./255 green:227./255 blue: 229./255 alpha:1] CGColor]) ;
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
别忘了#import <QuartzCore/QuartzCore.h>
发布于 2010-05-11 16:52:42
我猜你说的是和UIButtonTypeRoundedRect
的UIButton吧?你不能改变它的背景颜色。当你尝试改变它的背景颜色时,你相当于改变了绘制按钮的矩形的颜色(通常是清晰的)。所以有两条路要走。要么子类化UIButton并重写它的-drawRect:
方法,要么为不同的按钮状态创建图像(这样做非常好)。
如果你在Interface Builder中设置背景图像,你应该注意到IB并不支持为按钮可能具有的所有状态设置图像,所以我建议在代码中这样设置图像:
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"disabled.png"] forState:UIControlStateDisabled];
[myButton setBackgroundImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected];
[myButton setBackgroundImage:[UIImage imageNamed:@"higligted.png"] forState:UIControlStateHighlighted];
[myButton setBackgroundImage:[UIImage imageNamed:@"highlighted+selected.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)];
最后一行显示了如何为选中和突出显示状态(这是IB不能设置的状态)设置图像。如果您的按钮不需要选定状态,则不需要选定的图像(第4&6行)。
发布于 2012-05-20 09:37:56
子类化UIButton并重写setHighlighted和setSelected方法
-(void) setHighlighted:(BOOL)highlighted {
if(highlighted) {
self.backgroundColor = [self.mainColor darkerShade];
} else {
self.backgroundColor = self.mainColor;
}
[super setHighlighted:highlighted];
}
-(void) setSelected:(BOOL)selected {
if(selected) {
self.backgroundColor = [self.mainColor darkerShade];
} else {
self.backgroundColor = self.mainColor;
}
[super setSelected:selected];
}
我的darkerShade方法在UIColor类别中,如下所示
-(UIColor*) darkerShade {
float red, green, blue, alpha;
[self getRed:&red green:&green blue:&blue alpha:&alpha];
double multiplier = 0.8f;
return [UIColor colorWithRed:red * multiplier green:green * multiplier blue:blue*multiplier alpha:alpha];
}
https://stackoverflow.com/questions/2808888
复制相似问题