【发布时间】:2015-03-26 00:12:46
【问题描述】:
所以我正在创建一个 UIButton,我想将它设置为具有两个不同状态(正常和突出显示)的单独图像,但是当将 highlight 属性设置为 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] 但出现了同样的问题。在将 isHighlighted 设置为 YES 之前,我还尝试将 normal_state 图像设置为 nil,但无论 normal_state 图像保持什么,highlight_state 图像都被绘制在它上面。
【问题讨论】:
-
为什么还要设置选中状态?
-
为了在一个状态的单个按钮上显示两个图像,您使用 [button setImage:[UIImage imageNamed:@"image1"] forState:UIControlStateHighlighted]; [按钮 setBackgroundImage:[UIImage imageNamed:@"image1"] forState:UIControlStateHighlighted];
-
尝试从
[button setImage:[UIImage imageNamed:@"image2.jpg"] forButtonState:UIControlStateSelected]; [button setImage:[UIImage imageNamed:@"image2.jpg"] forButtonState:UIControlStateHighlighted];中删除.jpg并在buttonPressed:中仅尝试一种方法
标签: ios objective-c iphone uiimage uikit