【问题标题】:ios horizontal scroll menu - background buttons selectios水平滚动菜单-背景按钮选择
【发布时间】:2012-05-25 13:12:41
【问题描述】:

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

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

【问题讨论】:

    标签: ios xcode ios5 uibutton


    【解决方案1】:

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

    来自the UIControl_Class docs at developer.apple.com(强调我的):

    UIControlStateHighlighted

    控件的突出显示状态。当一个控件进入这个状态时 在跟踪期间以及进行触摸时触摸进入和退出 事件。 ...

    UIControlStateSelected

    控件的选定状态。 对于许多控件,这种状态没有 对行为或外观的影响。但其他子类(例如, UISegmentedControl 类)可能具有不同的外观,具体取决于 在他们选择的状态。 ...

    【讨论】:

    • 感谢您的回复,它运作良好,但只是当我点击一个项目时。如果我希望按钮与第二个背景图像保持一致,直到我点击另一个项目,该怎么办?
    • 您可以选择和突出显示。见stackoverflow.com/questions/1785008/…
    猜你喜欢
    • 2015-12-29
    • 2014-04-27
    • 2014-11-08
    • 2014-12-12
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    相关资源
    最近更新 更多