我正在尝试使用2个Round rect按钮创建一个分段控件,但不知道如何为Highlighted按钮设置'forState'。
其他人说要在IB中设置背景图像并以编程方式修改图像
尝试:
[buttonName setImage:[UIImage imageNamed:@"UnselectedImage.png"] forState:UIControlStateNormal];
[buttonName setImage:[UIImage imageNamed:@"SelectedImage.png"] forState:UIControlStateHighlighted];
问题是我点击后背景图片没有重新出现,任何线索?
答案 0 :(得分:1)
仅在用户触摸按钮时使用“突出显示”状态。一旦用户从按钮上释放他/她的手指,状态就会恢复正常。
您可以尝试使用“已选择”状态(未经测试但值得尝试,因为它似乎很合乎逻辑)。如果它不起作用,您可能需要自己通过代码更改按钮的“选定”状态(在按钮操作或segmentedControl委托方法中)
答案 1 :(得分:1)
您需要为UIControlStateSelected
设置所选图片,而不是UIControlStateHighlighted
答案 2 :(得分:1)
UIButton有点像瞬间开关。它没有“现在热”的状态。 “突出显示”实际上只是在被点击时,然后就是在那个状态之外。
看起来您可能需要一些外部变量来跟踪按钮的状态,也可能需要管理图像的混乱。
我喜欢那个形象。一旦你开始运行,这将是一个很好的效果。
答案 3 :(得分:1)
您可以尝试以下代码:
1图片:
int iButtonState = 1;
if (iButtonState == 1) {
[buttonName setImage:[UIImage imageNamed:@"Normal.png"] forState:UIControlStateNormal];
iButtonState = 2;
} else if (iButtonState == 2) {
[buttonName setImage:[UIImage imageNamed:@"Other.png"] forState:UIControlStateNormal];
iButtonState = 1;
}
2张图片:
int iButtonState = 1;
int iTabImageA = 1;
int iTabImageB = 1;
if (iButtonState == 1) {
if (iTabImageA == 1) {
[buttonName setImage:[UIImage imageNamed:@"ImageA1.png"] forState:UIControlStateNormal];
iTabImageA = 2;
} else if (iTabImageA == 2) {
[buttonName setImage:[UIImage imageNamed:@"ImageA2.png"] forState:UIControlStateNormal];
iTabImageA = 1;
}
iButtonState = 2;
} else if (iButtonState == 2) {
if (iTabImageB == 1) {
[buttonName setImage:[UIImage imageNamed:@"ImageB1.png"] forState:UIControlStateNormal];
iTabImageB = 2;
} else if (iTabImageB == 2) {
[buttonName setImage:[UIImage imageNamed:@"ImageB2.png"] forState:UIControlStateNormal];
iTabImageB = 1;
}
iButtonState = 1;
}