【问题标题】:Change UIImageView's color by file name通过文件名更改 UIImageView 的颜色
【发布时间】:2013-07-17 04:57:00
【问题描述】:

我正在尝试更改 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 帧。

【问题讨论】:

  • 你知道循环在这里做什么吗? imageName 正在被覆盖,最后它将包含 imageName = sf43.png
  • @TheTiger 我编辑了帖子和代码,但没有任何改变
  • 从你的问题问题不清楚,但你可以使用Tag,不明白你为什么使用循环。
  • 当然它只会改变最后一张图片。在您的循环中,您将覆盖 frameImage 的图像属性(可能是 UIImageView)44 次。这没有多大意义。

标签: ios uiimageview


【解决方案1】:

在您的循环中,您将设置 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];
}

【讨论】:

    猜你喜欢
    • 2020-04-07
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 2016-05-14
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    相关资源
    最近更新 更多