在iOS 7中突出显示我的按钮

时间:2013-12-11 07:19:53

标签: iphone objective-c ios7 uibutton

我正在iOS 7中制作自定义键盘,我希望按钮的背景颜色可以在用户点击时更改。但是,我无法按下按钮。在我分配给按钮的IBAction中,我正在使用的代码是

    if(button.highlighted==YES){
    button.backgroundColor = [UIColor blackColor]; //Change background color
    button.titleLabel.textColor = [UIColor whiteColor]; //Change text color
    }

我在这里做错了什么?我是否滥用“突出显示”?当我运行它时,这段代码似乎根本不会影响用户界面,我不知道该用什么来替换它。

4 个答案:

答案 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,然后选择drawingcontrol部分,启用show Touch on HighlightHighlighted enter image description here

答案 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)

Source