2013-08-22 3 views
0

У меня есть UIButton и установите его фоновое изображение с правильным кодом.Изображение UIButton с состояниями

`[button setImage:self.image forState:UIControlStateNormal]` 

и показывает правильное изображение, когда кнопка инициализируется, но я хочу, чтобы сделать изображение ушел, когда государство UIControlStateSelected.

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

Должен ли я сделать image alpha0.0?

Спасибо!

ответ

4

Использование фотошопа, создание нового изображения с прозрачным фоном. Сохраните его как файл nope.png, перетащите его в свой проект. затем

[button setImage:[UIImage imageNamed:@"nope.png"] forState:UIControlStateSelected]; 

Другой способ это вам нужно создать новую категорию изображения:

@interface UIImage (UIImageFrameColor) 
+(UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)size; 
@end 

@implementation UIImage (UIImageFrameColor) 
+(UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)size 
{ 
    UIGraphicsBeginImageContextWithOptions(size, YES, 0); 

    [color set]; 
    UIBezierPath * path = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, size.width, size.height)]; 
    [path fill]; 

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

    return image; 
} 
@end 

Затем вам нужно сделать изображение имеют одинаковый цвет фона цвет кнопки зрения ужин

UIImage *bgImage = [UIImage imageWithColor:button.supperview.backgroundColor andSize:button.frame.size]; 
    [button setImage:bgImage forState:UIControlStateSelected]; 
+0

Да, я думаю, это единственный способ реализовать его. – fkkcloud

1

Попробуйте [button setImage:nil forState:UIControlStateSelected];

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

+0

Я пробовал это, и я думаю, когда он равен нулю, он захватывает значение по умолчанию, которое является одним из StateNormal. – fkkcloud

1

Попробуйте [кнопка setSeleted: YES];

Если вы хотите создать кнопку, например, кнопку контрольного списка. Это пример кода:

[button setImage:imageNormal forState:UIControlStateNormal]; 
[button setImage:imageSelected forState:UIControlStateSelected]; 
..... 

-(void)btnButtonPressed:(UIButton*)sender { 
    [sender setSelected:!sender.selected]; 
} 

Надейтесь, что это вам поможет!

+0

У меня вопрос не получается по-другому, если он находится в StateSelected, но чтобы изображение по умолчанию было полностью прозрачным или вообще отсутствовало. – fkkcloud

1

Пожалуйста, проверьте и попробуйте. Это может быть полезно вам:

[button setImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal]; 
[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateHighlighted]; 
[button setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateSelected]; 
Смежные вопросы