为UIControlStateHighlighted设置UIImage

时间:2012-08-21 10:33:31

标签: ios uibutton

The images

board [i]是我以程序方式创建的UIButtons数组,我无法为UIControlStateHighlighted更改其图像:

    [board[i] setImage:[UIImage imageNamed:@"block"] forState:UIControlStateNormal];
    [board[i] setImage:[UIImage imageNamed:@"blockPressed"] forState:UIControlStateHighlighted];

当我在模拟器中用鼠标按下按钮时,图像不会改变。我认为这是一个非常noob的问题,但我不知道代码不起作用。

3 个答案:

答案 0 :(得分:1)

以编程方式添加按钮时执行以下操作:

  1. 添加每个目标。

  2. 提供从0开始计数的所有按钮。

  3. 将UserInteraction设置为true

  4. setBackgroundImage:[UIImage imageNamed:@“blockPressed.png”] forState:UIControlStateHighlighted如果你想要按钮高亮

  5. 现在按下按钮为所有按钮调用相同的方法:例如

    -(void)ButtonTouched:(id)sender
    {
       UIButton *btntouched = sender;
       NSLog(@"%@", btntouched);
       [btntouched setBackgroundImage:[UIImage imageNamed:@"blockPressed.png"]  forState:UIControlStateHighlighted];// it can be forState:UIControlStateNormal also
    }
    

答案 1 :(得分:0)

我认为你没有触发突出显示的状态。这可能是因为它们未设置为启用了交互。或者您设置按钮的方式还有其他缺失。

您可以尝试的另一件事是在触摸它们时为每个按钮添加一个选择器,然后通过引用选择器功能的发送者来更改图像。

答案 2 :(得分:0)

假设您确定图片未返回nil,则此代码应该有效:

[myUIButton setImage:[UIImage imageNamed:@"myHighlightedButtonImage.png"] forState:UIControlStateHighlighted];

如果您在viewDidLoad()中调用该行,它应该可以找到。