2013-12-11 5 views
2

Я создаю пользовательскую клавиатуру в iOS 7, и я хочу, чтобы цвет фона кнопок менялся при нажатии на пользователя. Тем не менее, я не могу получить кнопку для этого. В IBAction, что я присваивающий к кнопкам, код я используюПодчеркивание кнопок в iOS 7

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

Что я здесь делаю неправильно? Я злоупотребляю «подчеркнутым»? Этот код, похоже, вообще не влияет на пользовательский интерфейс, когда я запускаю его, и я не уверен, что заменить его.

ответ

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: методом

1

Ну просто, что вы можете сделать в вашем xib также. Следуйте приведенным ниже грохоты выстрел: -

1) Выберите button, а затем внутри drawing и control секции позволяют show Touch on Highlight и Highlighted enter image description here

+0

мы можем установить цвет выделить ??? –

+0

Для этого вам нужно настроить кнопку –

+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; 
} 
+0

Я рекомендую кэшировать изображения, сгенерированные таким образом –

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

Смежные вопросы