所以我正在创建一个UIButton,我想将它设置为具有两个不同状态(正常和突出显示)的单独图像,但是当将突出显示的属性设置为yes时,突出显示的图像将绘制在正常状态图像之上而不是完全替换它。
这是我的代码:
CGFloat size = 50.0;
CGRect frame = CGRectMake(0, 0, size, size);
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundColor:[UIColor clearColor]];
[button setFrame:frame];
[button setImage:[UIImage imageNamed:@"image1"]forButtonState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"image2.jpg"] forButtonState:UIControlStateSelected];
[button setImage:[UIImage imageNamed:@"image2.jpg"] forButtonState:UIControlStateHighlighted];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:button];
-(void)buttonPressed:(UIButton *)sender
{
[sender setSelected:YES];
[sender setHighlighted:YES];
}
我尝试过使用[button setImage]和[button setBackgroundImage],但同样的问题出现了。我还尝试将normal_state图像设置为nil,然后将设置isHighlighted设置为YES,但无论normal_state图像保持什么,并且highlight_state图像都在其上方绘制。
答案 0 :(得分:0)
CGFloat size = 50.0;
CGRect frame = CGRectMake(100, 100, size, size);
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundColor:[UIColor clearColor]];
[button setFrame:frame];
[button setImage:[UIImage imageNamed:@"image1"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"image1"] forState:UIControlStateSelected];
[button setImage:[UIImage imageNamed:@"image1"] forState:UIControlStateHighlighted];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
-(void)buttonPressed:(UIButton *)sender{
[sender setSelected:NO];
[sender setHighlighted:YES];
}
如果您设置了两个状态,即[发送者setSelected:YES]; [sender setHighlighted:YES],您可以一次创建一个按钮状态,即正常/突出显示/选择。在一次。编译器根据最后一行自动工作,即[sender setHighlighted:YES]并使[sender setSelected:NO];这就是为什么它只显示按钮上突出显示的图像。