0

我正在尝试更改 UIImageView 颜色,颜色更改代码工作正常,但我的问题是该方法应通过其文件名动态更改图像的颜色:

改变帧图像:

- (IBAction)fr1:(id)sender {

    mainViewCont.frameImage.image = [UIImage imageNamed:@"sf1.png"];

}
- (IBAction)fr2:(id)sender {
    mainViewCont.frameImage.image = [UIImage imageNamed:@"sf2.png"];

}

改变色调:

- (IBAction)frameColor:(UISegmentedControl *)sender {

    NSString *imageName ;

    for( int i = 0; i < 44 ; i++ ) {

        imageName = [NSString stringWithFormat:@"sf%d.png",i];


    switch (sender.selectedSegmentIndex) {

        case 0:
            mainViewCont.frameImage.image = [tintImage imageNamed:imageName withColor:[UIColor blackColor]];
            break;

        case 1:
               mainViewCont.frameImage.image = [tintImage imageNamed:imageName withColor:[UIColor whiteColor]];
            break;

        default:
            break;
        }

    }
}

现在的问题只是图像的颜色有 44 个数字(最后一张图像)变化!当我按下第 24 帧时,它无法识别帧图像是编号 24 。

4

1 回答 1

2

在您的循环中,您正在设置 UIImageView 的图像属性 44 次。这意味着您只看到最后一张图片。您只需要更改已设置为图像的图像的颜色。

您应该向 ViewController 添加两个实例变量。imageTintColorimageName

您必须添加一个名为的方法,该方法configureView加载图像imageName并设置其tintColor.

在您的 IBAction 中选择您保存图像名称imageName并调用的图像configureView。在您的 segmentedControl 操作中,您将选定的颜色保存在imageTintColor并调用configureView.

基本上是这样的:

- (void)configureView {
    UIImage *image = [tintImage imageNamed:self.imageName withColor:self.imageTintColor];
    _frame.image = image;
}

- (IBAction)img1:(id)sender {
    self.imageName = @"sf1.png";
    [self configureView];
}

- (IBAction)img2:(id)sender {
     self.imageName = @"sf2.png";
    [self configureView];
}

- (IBAction)img3:(id)sender {
    self.imageName = @"sf3.png";
    [self configureView];
}

- (IBAction)changeColor:(UISegmentedControl *)sender {
    NSString *imageName ;
    for( int i = 1; i <= 3 ; i++ ) {

        imageName = [NSString stringWithFormat:@"sf%d.png",i];

        switch (sender.selectedSegmentIndex) {
            case 0:
                self.imageTintColor = [UIColor blackColor];
                break;

            case 1:
                self.imageTintColor = [UIColor whiteColor];
                break;

            default:
                break;
        }
    }
    [self configureView];
}
于 2013-07-18T10:28:57.480 回答