UIButton背景图片在水龙头上不变

问题描述:

我有一个UIButton,我成功地设置了背景图片。我想在用户点击它时更改背景图片(导航到下一个视图控制器)。不幸的是,背景不会改变水龙头。不过,它确实当我点击并按住按钮,所以我很困惑。代码如下所示:UIButton背景图片在水龙头上不变

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x_offset, y_offset, width, BUTTON_HEIGHT)]; 
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
    button.backgroundColor = [UIColor whiteColor]; 
    UIImage *buttonImage = [[UIImage imageNamed:@"main_button"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(10, 10, 10, 10)]; 
    UIImage *pressedbuttonImage = [[UIImage imageNamed:@"main_button_pressed"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(10, 10, 10, 10)]; 
    [button setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateHighlighted]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateApplication]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateDisabled]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateReserved]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateSelected]; 
    return button; 

我知道我与UIControlStates过分了,但我想演示,我已经试过所有:)

问题是你只是在每个事件发生时改变图像。当你点击并按住它时会显示突出显示的图像。当您更改状态时,它恢复到正常状态,并显示图像(正常的背景图像)

可以达到所期望的行为方式有两种:

1)

在你IBAction,改变正常的按钮图像。

- (IBAction)buttonPressed:(UIButton *)button 
{ 
    UIImage *pressedbuttonImage = [[UIImage imageNamed:@"main_button_pressed"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 10, 10, 10)]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateNormal]; 
} 

2)

套装selectedtrue

- (IBAction)buttonPressed:(UIButton *)button 
{ 
    button.selected = YES; 
} 
+0

您的第一种方法奏效 - 尽管我必须为UIControlEventTouchDown和UIControlEventTouchUpOutside编写处理程序 - 如果用户将手指从按钮上移开,后者将重置图像。幸运的是,我有一个帮助器方法,它可以构建我的按钮,所以我不必在处处添加这些代码行:) – Ger 2015-02-08 22:17:23

好问题是,一旦你停止敲击按钮,该按钮的背景图像将默认为您为UIControlStateNormal设置的任何背景图像。所以你需要做的是当你的按钮被轻敲时,在选择按钮后将UIControlStateNormal背景图像重置为你想要的任何图像。

+0

按钮highlighted财产你是说这太快了,我看到的变化? – Ger 2015-02-08 21:47:46

+0

您是否找到针对您的问题的解决方案,因为我现在也遇到同样的问题。我也认为它正在快速变化,我们无法看到变化。 – 2017-07-25 20:46:46