我正在iOS 7中制作自定义键盘,我希望按钮的背景颜色可以在用户点击时更改。但是,我无法按下按钮。在我分配给按钮的IBAction中,我正在使用的代码是
if(button.highlighted==YES){
button.backgroundColor = [UIColor blackColor]; //Change background color
button.titleLabel.textColor = [UIColor whiteColor]; //Change text color
}
我在这里做错了什么?我是否滥用“突出显示”?当我运行它时,这段代码似乎根本不会影响用户界面,我不知道该用什么来替换它。
答案 0 :(得分:4)
更改按钮的突出显示状态:
[YourButton setBackgroundImage:[self imageWithColor:[UIColor greenColor]] forState:UIControlStateHighlighted];
并将此方法添加到视图控制器:
- (UIImage *)imageWithColor:(UIColor *)color {
CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
答案 1 :(得分:1)
你也可以在xib
中做一些简单的事情。请按照以下屏幕截图: -
1)选择button
,然后选择drawing
和control
部分,启用show Touch on Highlight
和Highlighted
答案 2 :(得分:0)
+ (UIImage *)imageWithColor:(UIColor *)color
{
CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
使用此方法创建图像,并使用setBackgroundImage:forState:
方法
答案 3 :(得分:0)
在Swift中,你可以这样做:
extension UIButton {
func setBackgroundColor(color: UIColor, forState: UIControlState) {
UIGraphicsBeginImageContext(CGSize(width: 1, height: 1))
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), color.CGColor)
CGContextFillRect(UIGraphicsGetCurrentContext(), CGRect(x: 0, y: 0, width: 1, height: 1))
let colorImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.setBackgroundImage(colorImage, forState: forState)
}}
只要在任何课程之外写作,你就可以在任何地方使用它:
yourButton.setBackgroundColor(UIColor.whiteColor(), forState: UIControlState.Highlighted)