【问题标题】:UIButton image not changingUIButton图像没有改变
【发布时间】:2013-06-11 03:44:46
【问题描述】:

我有 4 个UIButtons,我想以随机顺序闪烁浅色图像一秒钟。所以显然我想以编程方式更改按钮图像。正如您在 XCode Project 方法中看到的那样:showSequence,它尝试将图像设置为较亮的图像,然后再返回,但它不会在模拟器上显示。

代码片段:

- (void) showSequence:(NSMutableArray *)sequenceArray {

    for(int i = 0; i < [sequenceArray count]; i++){

        int sequenceNumber = [[sequenceArray objectAtIndex:i] intValue];

        switch (sequenceNumber) {
           case 1: {
              NSLog(@"green");
              [self.greenButton setBackgroundImage:[UIImage imageNamed:@"green_active.png"] forState:UIControlStateNormal];
              sleep(1);
              [self.greenButton setBackgroundImage:[UIImage imageNamed:@"green_inactive.png"] forState:UIControlStateNormal];
              break;
           }

           case 2: {
              NSLog(@"red");
              [self.redButton setBackgroundImage:[UIImage imageNamed:@"red_active.png"] forState:UIControlStateNormal];
              sleep(1);
              [self.redButton setBackgroundImage:[UIImage imageNamed:@"red_inactive.png"] forState:UIControlStateNormal];
              break;
           }

          case 3: {
             NSLog(@"yellow");
             [self.yellowButton setBackgroundImage:[UIImage imageNamed:@"yellow_active.png"] forState:UIControlStateNormal];
             sleep(1);
             [self.yellowButton setBackgroundImage:[UIImage imageNamed:@"yellow_inactive.png"] forState:UIControlStateNormal];
             break;
          }

          case 4: {
             NSLog(@"blue");
             [self.blueButton setBackgroundImage:[UIImage imageNamed:@"blue_active.png"] forState:UIControlStateNormal];
             sleep(1);
             [self.blueButton setBackgroundImage:[UIImage imageNamed:@"blue_inactive.png"] forState:UIControlStateNormal];
             break;
        }

        default:
            break;
       }
    }
}

在此先感谢(顺便说一句,在它会中断的序列中不要点击开始按钮(我仍在努力))

【问题讨论】:

    标签: ios objective-c ipad uibutton


    【解决方案1】:

    您可以通过简单地将 imageView 添加到 Button 并将 NSArray 分配给 imageView.animationImages 属性来做到这一点。 NSArray 必须包含按照您的序列的图像 见下面代码

     imageView.animationImages = [NSArray arrayWithObjects:    
                                            [UIImage imageNamed:@"myImageFrame1.gif"],
                                            [UIImage imageNamed:@"myImageFrame2.gif"],
                                            [UIImage imageNamed:@"myImageFrame3.gif"],
                                            [UIImage imageNamed:@"myImageFrame4.gif"], nil];
    
    
            imageView.animationDuration = 2.0; 
            imageView.animationRepeatCount = 1; // for showing only once, otherwise set to 0
            [imageView startAnimating]; 
    [self.button addsubView:imageView]
    

    【讨论】:

    • 谢谢,这对我有用,但我怎样才能让它不重复动画?
    • 这里只需加1 imageView.animationRepeatCount = 1;
    【解决方案2】:

    检查

    1. 图片添加和命名正确
    2. 查看按钮上是否添加了图像,则背景图像不可见。
    3. IBoutlets 已连接
    4. 代替setBackgroundImage: 试试setImage:

    【讨论】:

    • 当你点击按钮时,这段代码会被执行吗?检查断点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多