0

我尝试在 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)];

这段代码有什么不好的地方吗?

4

1 回答 1

0

尝试UIControlStateHighlighted代替UIControlStateSelected. 突出显示的是用户触摸您的按钮时的状态。Selected 仅用于某些控件,例如段;一个自定义按钮(一个保持选中状态的按钮)将/可以使用 Selected。

来自developer.apple.com 上的 UIControl_Class 文档(强调我的):

UIControlStateHighlighted

控件的突出显示状态。当在跟踪过程中触摸进入和退出以及发生触摸事件时,控件将进入此状态。...

UIControlStateSelected

控件的选定状态。对于许多控件,此状态对行为或外观没有影响。但是其他子类(例如,UISegmentedControl 类)可能会根据它们选择的状态而具有不同的外观。...

于 2012-05-26T07:14:12.623 回答