我尝试在scrollView中创建一个水平导航菜单。对于菜单中的每个项目,我都有不同的图像。当我选择一个项目时,我想更改此项目的背景图片,但我不知道为什么我的代码不起作用:
for (int i=0; i<12; i++) {
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *normal=[UIImage imageNamed:@"icon1"];
UIImage *selec=[UIImage imageNamed:@"icon1down"];
[btn setFrame:CGRectMake(i*larg, 0, 42.0, 43.0)];
[btn setBackgroundImage:normal forState:UIControlStateNormal];
[btn setBackgroundImage:selec forState:UIControlStateSelected];
[scrollCat addSubview:btn];
cx+=42.0;
}
[scrollCat setContentSize:CGSizeMake(cx, 43)];
此代码中有什么坏处吗?
答案 0 :(得分:0)
尝试使用UIControlStateHighlighted
代替UIControlStateSelected
。
突出显示的是用户触摸按钮时的状态。
Selected仅用于某些控件,例如segment;一个自定义按钮(一个说,保持选中)将/可以使用选定。
来自the UIControl_Class docs at developer.apple.com(强调我的):
<强> UIControlStateHighlighted 强>
控件的突出显示状态。控件在a时进入此状态 在跟踪期间和触摸时触摸进入和退出 事件。 ...
<强> UIControlStateSelected 强>
控件的选定状态。 对于许多控件,此状态没有 对行为或外表的影响。但是其他子类(例如, UISegmentedControl类可能有不同的外观取决于 在他们选择的状态。 ...