2015-06-09 2 views
2

Возможно ли установить цвет фона отключенUIButton? Мы хотели бы использовать более приглушенный цвет, когда кнопка отключена, но я не вижу никаких методов в пределах UIButton, которые позволят это. Есть ли обходной путь или другой способ, которым мы могли бы это сделать?Установить цвет фона на UIButton при отключении?

+1

это может помочь: http://stackoverflow.com/a/6309314/986169 – giorashc

+3

Если вы готовы к подклассу кнопку, вы можете просто переопределить '-setEnabled:' – Alladinian

+0

Может, пожалуйста, скажите, шаг за которые вы хотите изменить цвет фона. – Rajesh

ответ

1

Надеется, что это помогает:

UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 35)]; 

CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); 
UIGraphicsBeginImageContext(rect.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]); 
CGContextFillRect(context, rect); 

UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

[btn setBackgroundImage:image forState:UIControlStateDisabled]; 
+0

почему этот код, когда пользователь может установить цвет фона методом setBackground. – Rajesh

+1

@RajeshMaurya, потому что вы не можете использовать setBackgroundColor для определенных состояний. – tomtaylor

1

Этого код для Swift 2

let rect = CGRectMake(0, 0, someButton.frame.width,someButton.frame.height) 
    UIGraphicsBeginImageContext(rect.size) 
    let context = UIGraphicsGetCurrentContext() 
    CGContextSetFillColor(context, CGColorGetComponents(UIColor.lightGrayColor().CGColor)) 
    CGContextFillRect(context, rect) 
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0) 
    view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true) 
    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    someButton.setBackgroundImage(image, forState: .Disabled) 

    someButton.enabled = false 
6

Я концентрируясь на этом комментарии вашего s - "Мы хотели бы использовать более приглушенный цвет, когда кнопка отключена ". Если изменение альфа кнопки является приемлемым решением, вы можете очень хорошо использовать этот код.

someButton.alpha = 0.5;//This code should be written in the place where the button is disabled. 
2

Кажется, что это невозможно, так как свойство цвета фона контролируется UIView класса, который является предком UIButton.

So UIButton состояние управления не принадлежит это имущество и не контролирует его.

Но все же вы можете наследовать UIButton и перезаписать метод setEnabled, чтобы соответствующим образом обновить цвет.

Это самый понятный способ сделать это. так как вы можете назначить унаследованный класс любому UIButton в раскадровке или файле Xib. без необходимости каких-либо подключений. (нет IBOutlets)

Надеюсь, что это полезно, если хотите, я могу поделиться некоторым кодом.

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