在选定的UIButton上单击时突出显示的UIButton状态
当我点击已经select的button时,我想让我的UIButton显示突出显示的状态。
基本上在突出显示的状态,我应用一个* .png图像作为我的UIButton backgroundImage给予按下的效果。
但是,如果button已经在选定的状态当我再次点击它,我只是看不到突出显示的状态,但它直接进入正常状态!
观看问题 – >问题的 video!
请帮助
//0 init UIButton UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, aSide, aSide)]; //1 Give it a backgroundColor [button setBackgroundColor:aColor]; [..] //2 Set titleLabel and its style [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor redColor] forState:UIControlStateSelected]; [button setTitleColor:[UIColor grayColor] forState:UIControlStateHighlighted]; UIImage *shadowImage = [UIImage imageNamed:kBtnShadow]; shadowImage = [shadowImage stretchableImageWithLeftCapWidth:floorf(shadowImage.size.width/2) topCapHeight:floorf(shadowImage.size.height/2)]; [button setBackgroundImage:shadowImage forState: UIControlStateHighlighted]; [button setTitle:aLabel forState: UIControlStateNormal]; //3 Assign tag and Action [button setTag:tag]; [button addTarget:target action:a forControlEvents:UIControlEventTouchUpInside];
各种状态: UIControlStateNormal
, UIControlStateSelected
和(UIControlStateSelected | UIControlStateHighlighted)
实际上都是不同的。 如果您希望您的shadowImage
同时应用(仅)突出显示状态和突出显示的+选定状态,则还必须设置:
[button setBackgroundImage:shadowImage forState:(UIControlStateHighlighted | UIControlStateSelected)]
在swift
这将是:
button.setBackgroundImage(shadowImage, forState: UIControlState.Selected.union(UIControlState.Highlighted))
在Swift v3(2016年11月)中:
button.setBackgroundImage(shadowImage, for: UIControlState.selected.union(UIControlState.highlighted))