2016-06-02 4 views
1

Я хочу установить непрозрачность кнопки на 40%, когда она отключена.Прослушивание кнопки Swift Отключить событие

В настоящее время я использую следующий модифицированный код я нашел на StackOverflow:

let disabledColor = self.backgroundColor!.colorWithAlphaComponent(0.4) 
self.setBackgroundImage(self.imageForColor(disabledColor), forState: .Disabled) 

private func imageForColor(color: UIColor) -> UIImage { 
    let rect = CGRectMake(0.0, 0.0, 1.0, 1.0) 
    UIGraphicsBeginImageContext(rect.size) 
    let context = UIGraphicsGetCurrentContext() 

    CGContextSetFillColorWithColor(context, color.CGColor) 
    CGContextFillRect(context, rect) 

    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return image 
} 

Я полагал, что я был бы в состоянии установить непрозрачность на цвет фона я использую, а затем просто создать образ из него и использовать его в состоянии .Disabled, но это ничего не делает.

Если я отправлю что-то вроде UIColor.redColor() на изображениеForColor, кнопка изменится на «Красный», когда она отключена ... однако непрозрачность, похоже, игнорируется.

Кто-нибудь знает, почему это так? Было бы неплохо, если бы я мог просто слушать событие с отключенным и запускать свою собственную функцию, или если Apple подойдет, чтобы позволить нам установить цвет фона для состояния, а не фонового изображения ...

****** EDIT ******

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

Я думаю, решение будет только использовать фоновые изображения, а не цвета (?), Так как я не могу заменить цвет ...

В идеале я хотел бы, чтобы применить прозрачность к кнопке всей при отключенном событии.

ответ

1

Я думаю, вам было бы лучше отклассифицировать UIButton, а затем переопределить setEnabled, чтобы вы могли манипулировать цветом фона. См. this very similar thread.